【发布时间】:2014-07-12 15:54:15
【问题描述】:
我正在为 Ubuntu 10.04 调试一个 C++ 应用程序,该应用程序有时会收到 SIGKILL 信号。
我想捕捉信号并阻止它终止执行,只是想看看我是否能在那个精确的时刻获得一些关于应用状态的有用信息。
阅读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
- g++ 版本: 7.1
【问题讨论】:
标签: c++ multithreading gdb signals ubuntu-10.04