SIGTRAP之后无法单步执行gdb中的程序

时间:2018-09-04 13:21:23

标签: gdb signals mingw

使用mingw gdb,当我在程序运行时中断程序时(使用In GDB on MinGW, how do I make Ctrl-C stop the program?中的方法),gdb无法从那里开始。

我唯一可以获得的回溯信息是

#0  0x00007fffbfccd881 in ntdll!DbgBreakPoint () from /c/WINDOWS/SYSTEM32/ntdll.dll
#1  0x00007fffbfcf99fb in ntdll!DbgUiRemoteBreakin () from /c/WINDOWS/SYSTEM32/ntdll.dll
#2  0x00007fffbd473034 in KERNEL32!BaseThreadInitThunk ()
   from /c/WINDOWS/System32/KERNEL32.DLL
#3  0x00007fffbfca1431 in ntdll!RtlUserThreadStart () from /c/WINDOWS/SYSTEM32/ntdll.dll
#4  0x0000000000000000 in ?? ()

如果我尝试逐步执行该程序,则会得到

Single stepping until exit from function ntdll!DbgUiRemoteBreakin,
which has no line number information.

,程序运行完成。我能够正常执行(在断点之后),但似乎无法使调试器从SIGTRAP中恢复

1 个答案:

答案 0 :(得分:1)

DebugBreakProcess在目标进程中创建一个新线程,然后通过断点异常向调试器发送信号以暂停执行。

您可以使用info threads列出所有可用的线程,然后通过thread YOUR_THREAD_NUMBER切换到另一个线程。