Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-10-12 10:22:30 +0400
committerChristopher Faylor <me@cgf.cx>2000-10-12 10:22:30 +0400
commit5e0d760fb82d2d04c34306803253777aa5040fce (patch)
tree3cc5eec366fb30f8c93a4ee0f8b11a6d3cffb82d /winsup/utils/strace.cc
parentec300c997904f1db79cd5ca49f798ae08a3eedba (diff)
* strace.cc (proc_child): Handle exceptions correctly.
Diffstat (limited to 'winsup/utils/strace.cc')
-rw-r--r--winsup/utils/strace.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/utils/strace.cc b/winsup/utils/strace.cc
index a958aa431..6f901e1a8 100644
--- a/winsup/utils/strace.cc
+++ b/winsup/utils/strace.cc
@@ -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)