在SIGTRAP之后无法在gdb中单步调试程序

问题描述 投票:0回答:1

使用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中恢复

gdb signals mingw
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.