当你得到core文件之后,就可以利用gdb进行调试了!
gdb exe(你的可运行程序) ./core.pid(core文件)
进去后,使用bt即可查看死掉时栈的情况,省掉了无尽的调试跟踪,是不是很方便~。
然后使用frame命令。
还有就是里面某个线程停住,也没死,这种情况一般就是死锁或者涉及消息接受的超时问题(听人说的,没有遇到过)。遇到这种情况,可以使用:
gcore pid (调试进程的pid号)
手动生成core文件,在使用pstack(linux下好像不好使)查看堆栈的情况。如果都看不出来,就仔细查看代码,看看是不是在 if,return,break,continue这种语句操作是忘记解锁,还有嵌套锁的问题,都需要分析清楚了。
有了这个方法,多线程调试再也不头疼了!