【发布时间】:2018-11-09 00:14:10
【问题描述】:
当我的 SSH 连接断开时,我正在通过 SSH 调试在 Linux 环境中运行的 GDB 中的 Free Pascal 应用程序。我从经验中看到,发生这种情况时 GDB 已关闭,并且可以肯定的是,我运行了 pidof gdb 并没有返回任何内容。我重新打开 GDB 并附加到同一个正在运行的应用程序,我能够继续调试并在几分钟后完成。在我完成调试一个小时后,应用程序意外死亡。我唯一反映发生了什么的日志是:
Nov 5 16:29:59 kernel: [846469.866825] traps: Maintain[9065] trap int3 ip:7f5148924cf1 sp:7f51376a4420 error:0
经过一番研究,发送到应用程序的信号似乎会杀死它,除非它被调试器捕获。我的假设是这个信号是由程序到达我设置的断点引起的,而 GDB 不再可以捕获这个信号。
这是我的问题:
- GDB 意外关闭后是否可以将断点陷阱留在处理器中?
- 如果是这种情况,有没有办法在断点被应用然后意外关闭后从处理器中清除?
【问题讨论】: