linux - 为什么 gdb 会挂起?

标签 linux gdb g++

我有一个正在调试的应用程序,我试图了解 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/

相关文章:

gdb - 如何为 gdb 函数定义别名

c++ - 在 while 循环中执行操作,直到调用组合键 C++

linux - 有线 R 响应

查看保存在 Windows 中的同一文件时出现 PHP 解析器错误

c++ - GDB 报告崩溃但程序运行正常

c++ - GDB 中内部类的不完整类型,其虚拟方法在单独的文件中定义

c++ - 打开 MPI "Hello, World!"未编译

g++ -fsyntax-only单元测试

linux - 无法在centos上卸载并重新安装R

c - 如何在c开发过程中避免内存泄漏