gdb调试程序的时候,有时gdb会因为某些原因crash掉。这时被调试的那个进程往往就成了僵尸进程。这种僵尸进程用killall是杀不掉的,用kill -9或者kill -SIGKILL也是杀不掉的,甚至退出用户登录也杀不掉。很多人这时候只好reboot机器。
我在网上查了很多资料,都没有说到其他解决办法。
我认为linux不应该会这么弱智,也许是我用错了signal,因此就从kill -0 pid开始逐个尝试,终于发现用kill -18就能杀掉gdb产生的僵尸进程。信号18是SIGCONT,这个信号可以让停在断点上的进程继续运行。我分析原因,认为这是由于:停在断点上的进程不会响应除了SIGCONT之外的任何信号。
维基百科上说:
When SIGSTOP is sent to a process, the usual behaviour is to pause that process in its current state. The process will only resume execution if it is sent the
SIGCONT signal. SIGSTOP and SIGCONT are used for
job control in the
Unix shell, among other purposes. SIGSTOP cannot be caught or ignored.
这证实了我的想法。
分享到:
相关推荐
使用GDB调试,英文版。对于从事 Linux C/C++ 后台开发的读者来说,GDB 调试是需要熟练掌握的一项技能
这是GDB完全手册,用来在Linux环境下的GDB调试,很重要
linux gdb 调试手册
自己整理的linux gdb 调试命令资料。用于平时调试。
最新的Gdb安装包,linux版,希望能帮助大家调试好程序!
linux下使用gdb调试程序的教程。 详细讲解gdb工具的使用,以及调试技巧等。 linux上常用调试技术: 走读代码 打印日志 /proc/pid/... gdb、dbx strace、ltrace valgrind
linux GDB教程 linux开发调试手册 快速教会你如何将可执行程序在linux GDB下进行调试
非常详细的介绍 Linux下gdb调试工具指南
linux gdb test example
需要在/目录解压使用
linux下GDB教程
linuxGDB调试CC++入门.pdf
gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试 gdb 多进程程序调试
分享一套课程——Linux GDB C/C++调试基础与提升视频课程,提供源码+PPT下载。
gdb for crash tool
Linux课件:GDB调试简明指南.pdf
关于linux下使用GDB调试的资料 ,非常好。
Linux gdb 调试源码,知道的都知道怎么用,这里面包含了gdbserver,很全,是从官网上下载的原生态。方便找不到官网的童鞋下载。
强大的linux c调试的基本用法,gdb 的使用技巧
Linux GDB使用教程,内涵gdb常用的命令和操作,值得一看。