debugging - 在 ntdll 中使用 gdb 进行调试时突然出现断点

标签 debugging gdb

我做了一个非常简单的程序,它为我自动化了一些事情。我用 C++ 编写了它,它在 Windows 上运行。在 Codeblocks IDE 内部使用 GDB 对其进行调试时,我突然得到了许多断点。我不知道是什么导致了这个问题。断点似乎与内存问题有关......因为当我修复检测到的内存泄漏时,断点数量明显减少。

gdb 告诉我的确切内容是:

 Program received signal SIGTRAP, Trace/breakpoint trap.
 In ntdll!TpWaitForAlpcCompletion () (C:\Windows\system32\ntdll.dll)

我在我的程序中多次得到这个。我认为我可能做错了什么,即使该程序似乎运行得很好并且它完成了我想要它做的事情。谁能告诉我是什么问题,因为我不知道在哪里看?另外,如果这不是问题,那么有没有人知道如何禁用它,因为这会阻止我到达我自己设置的断点?

提前致谢!

编辑:(添加 GDB 的 where 命令的输出):
我在哪里可以检查每个函数的作用,以便我可以看到我做错了什么?
#0  0x76fefadd in ntdll!TpWaitForAlpcCompletion () from C:\Windows\system32\ntdll.dll
#1  0x0028e894 in ?? ()
#2  0x76fb272c in ntdll!RtlCreateUserStack () from C:\Windows\system32\ntdll.dll
#3  0x00657fb8 in ?? ()
#4  0x00657fb8 in ?? ()
#5  0x76f4b76a in ntdll!RtlDowncaseUnicodeChar () from C:\Windows\system32\ntdll.dll
#6  0x02070005 in ?? ()
#7  0x00000b10 in ?? ()
#8  0x0028e8dc in ?? ()
#9  0x76ff0b37 in ntdll!TpQueryPoolStackInformation () from C:\Windows\system32\ntdll.dll
#10 0x038b0000 in ?? ()
#11 0x00657fb8 in ?? ()
#12 0x76f4b76a in ntdll!RtlDowncaseUnicodeChar () from C:\Windows\system32\ntdll.dll
#13 0x6e6e9a5e in ?? ()
#14 0x038b0000 in ?? ()
#15 0x038b0000 in ?? ()
#16 0x00000000 in ?? ()

最佳答案

哇,你把我送回了 5 年前我在 linux 平台上使用 gdb 的时候 :)

您可以使用以下命令在接收 SIGTRAP 时防止 gdb 中断:

handle SIGTRAP nostop

但我和史蒂夫在一起,试试 WinDbg。它是专门为 window build 的。

关于debugging - 在 ntdll 中使用 gdb 进行调试时突然出现断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621059/

相关文章:

java - 从 IntelliJ Java 自动化 C++ 调试

xcode - 如何记录自定义 LLDB 命令(别名)?

gdb - 如何在 GDB 中调试失败的 cargo 测试?

gdb - 如何在 GDB 中运行记录指令历史和函数调用历史?

linux - 通过寄存器将参数传递给 execve(2)

c - 如何在eclipse中附加一个进程来调试多进程程序

c++ - 调试导致异常?

c++ - gdb:中断正在运行的进程而不杀死子进程

c - 过程识别

python - Pycharm 调试器,作为数组选项查看