经常在用linux的时候,都是ssh上去的,开了一个后台程序以后,如果将ssh关掉以后,一些输出的日志就没有办法看到了,只能是用ps看一下程序有没有死掉。
今天碰到一个非常严重的问题,就是程序跑着跑着,突然不见了,而且还没有core文件。只能重开程序,再观看,可是在看的时候就是不飞掉。结果第二天来的时候,又不见了。后来想了一个办法,当ssh关掉以后,可以用gdb attach到一个进程中,这样就可以知道程序在干嘛了?最后终于知道了,程序为什么飞掉了,而且没有core文件,原来是程序收到了一个系统发出来的SIG_PIPE的消息,因为程序中没有对这个信号进行忽略,所以就无声无息的退出去了。
本文分享了一种在SSH连接断开后,通过gdb跟踪后台运行程序的方法,解决了程序无故消失且未生成core文件的问题。最终发现是程序接收到SIG_PIPE信号导致异常退出。
4850

被折叠的 条评论
为什么被折叠?



