如何使用core文件来调试segment fault:
1.启动ulimit工具,如 ulimit -c 1000
2. 运行应用程序app
3.等待程序出错,通常是在shell上打印kill或者segment fault信息,这时就已经生成了core文件,一般为core.xxx, .xxx是一个数据,对应运行时的线程号。
4.执行gdb定位错误位置,如: gdb ./app ./core.xxx
5.等待gdb的启动,出现">"后,键入“bt”回车。这是就会打印出一堆打印信息,包括错误出在那个函数,什么类型,错误地址等。
对于出错代码的地址,还可以用反汇编查找出错的行。操作如下:
objdump app -D > app.asm,通过vi编辑app.asm,就可以找到对应的地址,从而找到出错函数的代码行,这样的定位跟详细一些。
1.启动ulimit工具,如 ulimit -c 1000
2. 运行应用程序app
3.等待程序出错,通常是在shell上打印kill或者segment fault信息,这时就已经生成了core文件,一般为core.xxx, .xxx是一个数据,对应运行时的线程号。
4.执行gdb定位错误位置,如: gdb ./app ./core.xxx
5.等待gdb的启动,出现">"后,键入“bt”回车。这是就会打印出一堆打印信息,包括错误出在那个函数,什么类型,错误地址等。
对于出错代码的地址,还可以用反汇编查找出错的行。操作如下:
objdump app -D > app.asm,通过vi编辑app.asm,就可以找到对应的地址,从而找到出错函数的代码行,这样的定位跟详细一些。