一、设置程序生成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