4
我正在调试Ubuntu 10.04的C++应用程序,它有时会收到SIGKILL
信号。 我想捕获信号,并阻止它杀死执行,只是为了看看我能否在该时刻获得应用程序状态的一些有用信息。使用gdb处理信号
读gdb documentation我发现handle
命令,所以我试图把它应用到SIGKILL信号:
(gdb) handle SIGKILL stop nopass
Signal Stop Print Pass to program Description
SIGKILL Yes Yes No Killed
因此,我理解这个正确:
stop
GDB should stop your program when this signal happens. This implies the print keyword as well.
print
GDB should print a message when this signal happens.
nopass
GDB should not allow your program to see this signal.
一旦SIGKILL
信号被发射,gdb
应该以某种方式捕获它,打印消息,停止执行,不要让应用程序自杀,对吧?
问题是,这不会发生,应用程序终止。
你知道我怎么可能抓到的信号?
有用的信息:
- 当在另一线程中执行被发射的信号,在运行的一段代码。
- GDB版本: 4.4.3
- 克++版本: 7.1
太好了。我必须找到另一种获取信息的方式。谢谢@克劳斯,我应该从一开始就检查手册页,并让你工作。 –