Skip to content

Commit

Permalink
retrace: Log call number on the first Ctrl-C/Break event.
Browse files Browse the repository at this point in the history
It's useful to debug hung traces on Windows.
  • Loading branch information
jrfonseca committed Apr 14, 2021
1 parent eb27172 commit d6a7b66
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions retrace/retrace_main.cpp
Expand Up @@ -996,6 +996,29 @@ VectoredHandler(PEXCEPTION_POINTERS pExceptionInfo)
return EXCEPTION_CONTINUE_SEARCH;
}

/*
* Show the current call number on the first Ctrl-C/Break event.
*/
static BOOL WINAPI
consoleCtrlHandler(DWORD fdwCtrlType)
{
static int cCtrlC = 0;
static int cCtrlBreak = 0;

switch (fdwCtrlType) {
case CTRL_C_EVENT:
fprintf(stderr, "%u: warning: caught Ctrl-C event\n",
retrace::callNo);
return cCtrlC++ ? FALSE : TRUE;
case CTRL_BREAK_EVENT:
fprintf(stderr, "%u: warning: caught Ctrl-Break event\n",
retrace::callNo);
return cCtrlBreak++ ? FALSE : TRUE;
default:
return FALSE;
}
}

#endif // _WIN32


Expand All @@ -1020,6 +1043,7 @@ int main(int argc, char **argv)
if (!IsDebuggerPresent()) {
AddVectoredExceptionHandler(0, VectoredHandler);
}
SetConsoleCtrlHandler(&consoleCtrlHandler, TRUE);
#endif

assert(snapshotFrequency.empty());
Expand Down

0 comments on commit d6a7b66

Please sign in to comment.