OSDN Git Service

* strace.cc (proc_child): Handle exceptions correctly.
authorcgf <cgf>
Thu, 12 Oct 2000 06:22:30 +0000 (06:22 +0000)
committercgf <cgf>
Thu, 12 Oct 2000 06:22:30 +0000 (06:22 +0000)
winsup/utils/ChangeLog
winsup/utils/strace.cc

index 7e136c3..83e4582 100644 (file)
@@ -1,3 +1,7 @@
+Thu Oct 12 02:19:12 2000  Christopher Faylor <cgf@cygnus.com>
+
+       * strace.cc (proc_child): Handle exceptions correctly.
+
 Sun Oct  8 23:11:17 2000  Christopher Faylor <cgf@cygnus.com>
 
        * ps.cc (main): Change order of reporting slightly so that windows pids
index a958aa4..6f901e1 100644 (file)
@@ -504,6 +504,7 @@ proc_child (unsigned mask, FILE *ofile)
   while (1)
     {
       BOOL debug_event = WaitForDebugEvent (&ev, 1000);
+      DWORD status = DBG_CONTINUE;
       if (!debug_event)
        continue;
 
@@ -533,9 +534,12 @@ proc_child (unsigned mask, FILE *ofile)
        case EXIT_PROCESS_DEBUG_EVENT:
          remove_child (ev.dwProcessId);
          break;
+       case EXCEPTION_DEBUG_EVENT:
+         if (ev.u.Exception.ExceptionRecord.ExceptionCode != STATUS_BREAKPOINT)
+           status = DBG_EXCEPTION_NOT_HANDLED;
+         break;
        }
-      if (!ContinueDebugEvent (ev.dwProcessId, ev.dwThreadId,
-                               DBG_CONTINUE))
+      if (!ContinueDebugEvent (ev.dwProcessId, ev.dwThreadId, status))
        error (0, "couldn't continue debug event, windows error %d",
               GetLastError ());
       if (ev.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT && --processes == 0)