gdb跟踪调试是linux环境下调试常用的方法,但在解决一些问题,如频繁创建线程,打印信息很多时,gdb调试会显得效率很低。这个时候,可以先生成内核转储文件,再针对生成的转储文件进行调试,从而大幅度提高调试效率。
1、生成内核转储文件
2、用gdb对内核转储文件调试
运行完后,如果有段错误,就会在当前目录下生成core.pid(pid为进程号)文件
# gdb –c core.pid ./filename 或输入命令#gdb –core=core.pid./filename
//从生成的转储文件中读取断点处信息,然后自己调试,方法与gdb的相同
3、在特定目录下生成转储文件
1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。可通过以下命令修改此文件:
echo"1" > /proc/sys/kernel/core_uses_pid
2)/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
可通过以下命令修改此文件:
echo"/corefile/core-%e-%p-%t" > core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表: