我有一个正在调试的应用程序,我试图了解 gdb 的工作原理以及为什么我有时无法单步执行该应用程序。我遇到的问题是当我单步执行程序时,gdb 将挂起并且它所附加的进程将进入失效状态。在 gdb 挂起后,我必须杀死它以释放终端(ctrl-C 不起作用,我必须通过获取该 gdb session 的进程 ID 并使用 kill -9 从不同的终端窗口执行此操作)。
我猜 gdb 挂起是因为它正在等待应用程序在下一条指令处停止,并且应用程序以某种方式完成执行而 gdb 没有识别到这一点。但这只是我根据迄今为止观察到的行为做出的推测。所以我的问题是,是否有人以前见过这种行为和/或可以提出可能的原因。我认为这可能会帮助我改进我的调试策略。
以防万一,我使用的是在 Ubuntu 10.04 x86_64 上运行的 g++ 4.4.3、gdb 7.1。
最佳答案
我遇到了类似的问题,通过向正在调试的进程发送 CONT
信号解决了这个问题。
关于linux - 为什么 gdb 会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978777/