本篇主要讲解如何利用gdb对coredump进行分析
gdb ./demo core
查看调用堆栈
gdb)bt
查看更为完整的信息
gdb) bt full
如果是多线程,想看每个线程的调用堆栈
gdb) thread apply all bt
至于如何分析内存变量之类的,在本一系列前面的章节有专门论述,可以参考。
想调试已经在运行的程序
gdb ./demo
假设当前运行着的demo进程为1234,则在gdb中运行attach进行关联
gdb) attach 1234
注意attach上之后,当前运行着的进程处于停止状态,要恢复运行,请用continue
对当前运行着的进程调试完毕,解脱关联
gdb)detach
最后的最后,如果想手工产生coredump文件,怎么办。
两种方法,第一种
kill -3 pid
第二种,利用gcore
gcore pid
推荐使用gcore,因为在产生core文件的同时,运行着的进程不会重启。