Linux下产生dump文件进行代码调试(debug,dump,gcc)

一、设置程序生成debug信息,一般会产生app.debug文件;html

二、在Linux命令行中开启程序Crashed的时候产生dump文件:linux

# ulimit -c unlimited #只对当前shell进程有效
或在~/.bashrc 的最后加入: ulimit -c unlimited (一劳永逸)

设置dump文件大小为100k,输入ulimit -c 100,默认是unlimited无限制,产生的dump文件会比较大。有时候须要使用root权限来设置。shell

三、在命令行输入gdb命令进行调试:bash

# gdb ./app ./dump
或# gdb ./app --core=./dump

app为程序名称,dump为产生的dump文件名称,默认状况下会在程序所在的目录产生core.xxx类型的dump文件,每次产生的数字编号都会不同,如core.956,core10125等。app

四、在输出的内容中找到相似的中断错误描述:ui

Program terminated with signal 11, Segmentation fault.
#0  SDK_SimulatorTrigger () at ../../CameraSDK/camera/camerasdk.cpp:95
95	        strcpy(ptr, "heel");

#后面是异常发生的源代码文件名称,95是代码行号,后面是具体的语句。命令行

五、经常使用的gdb调试器命令:线程

1.按下两次tab键,选择Y,#列出全部命令
2.break命令显示中断位置所在的源码文件和代码行号
3.list 100显示当前中断源码文件的代码行95~104,再次回车,接着显示后面的代码
4.bt命令等于info stack命令,查看程序调用堆栈列表
5.info命令,输入info回车,能够查询不少有用的信息,好比查询调用堆栈info stack,当前线程信息info threads等。

六、输入quit或!退出gdb调试,输入help显式帮助文件debug


参考:
Linux C 让程序崩溃后生成Core Dump
linux core dump 文件 gdb分析调试

相关文章
相关标签/搜索