前提是保证运行环境里有gdb,而且开发环境里有gcc编译器
1、 使能coredump
生成的coredump文件的大小是可以设置的,这里使用 unlimited 不限制,如果设置成0,则功能没有开启,不生成dump文件
可以使用如下命令来改变大小,一般不要设置太大,如果dump多次文件会很大,导致磁盘空间不够用
ulimit -C 1024
2、设置dump文件生成的路径
这里我们把生成路径设置到了源码目录,文件名是:core.xxxxxxx。
3、 编一段有问题的代码
出问题的在第7行
4 、编译
-g参数说明加入调试信息,也就是debug版本,没有-g参数也可以只是dump出来的信息可能没有那么详细,但是也能dump出来东西,也能大致的定位问题。
gcc test.c -g
5、运行问题程序,生成dump文件
如下图所示,有(core dumped)生成了
6 、gdb调试
使用-g参数,可以定位问题在第7行了
不使用-g参数,可以定位到函数func