用C++编写的程序在运行出错时,系统会生成core dump文件,如果系统没有生成可以通过命令
ulimit -c unlimited
使系统生成产生core文件,这样就可以利用core文件查看程序是在哪一行出现错误了,具体的方法如下:
1、程序编译时要加-g选项,保证debug信息生成在应用程序当中
2、如果运行过程中出错,执行下面命令查看程序哪里出现错误:
gdb a.out core
举例来说:
#include <stdio.h>
int main(int argc, char** argv) {
int* p = NULL;
*p = 10;
}
上面的程序会运行出错,用g++ -g编译后,生成a.out,运行a.out,产生core文件,当执行gdb a.out core时,gdb会自动停止在出错的位置。