winedbg and control-C

Eric Pouech eric.pouech at wanadoo.fr
Sat Jun 1 14:26:55 CDT 2002


now that we can properly handle ctrl-c in console applications, let's
use that in the debugger:
you can now stop winedbg while it's running by hitting ctrl-c in its
(wineconsole) window (it won't work in regular unix console)
you'll be brought back to the winedbg prompt for any action

A+
-------------- next part --------------
Name:          wdbg_ctrl_c
ChangeLog:     add ctrl-c support in winedbg
License:       X11
GenDate:       2002/06/01 19:19:45 UTC
ModifiedFiles: debugger/winedbg.c
AddedFiles:    
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/debugger/winedbg.c,v
retrieving revision 1.55
diff -u -u -r1.55 winedbg.c
--- debugger/winedbg.c	31 May 2002 23:06:47 -0000	1.55
+++ debugger/winedbg.c	1 Jun 2002 16:22:19 -0000
@@ -932,6 +932,19 @@
     }
 }
 
+static BOOL WINAPI DEBUG_CtrlCHandler(DWORD dwCtrlType)
+{
+    if (dwCtrlType == CTRL_C_EVENT)
+    {
+        DEBUG_Printf(DBG_CHN_MESG, "Ctrl-C: stopping debuggee\n");
+        /* FIXME: since we likely have a single process, signal the first process
+         * in list
+         */
+        return DEBUG_ProcessList && DebugBreakProcess(DEBUG_ProcessList->handle);
+    }
+    return FALSE;
+}
+
 static void DEBUG_InitConsole(void)
 {
     COORD	c;
@@ -962,12 +975,15 @@
     /* put the line editing mode with the nice emacs features (FIXME: could be triggered by a IVAR) */
     if (GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &mode))
         SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), mode | WINE_ENABLE_LINE_INPUT_EMACS);
+
+    /* set our control-C handler */
+    SetConsoleCtrlHandler(DEBUG_CtrlCHandler, TRUE);
 }
 
 int main(int argc, char** argv)
 {
     DWORD	retv = 0;
 
     /* Initialize the type handling stuff. */
     DEBUG_InitTypes();
     DEBUG_InitCVDataTypes();


More information about the wine-patches mailing list