什么是段错误
由于程序运行访问 不存在、系统保护或只读的内存地址,导致程序错误异常退出,操作系统在程序退出时把当前程序运行的内存状况存储到core文件中,并报告发生段错误(核心已转储)。
错误定位
1.编译出可调试执行文件
g++ *.cpp -o a -pthread -g
-g
:生成可调试文件
2.运行可执行文件
运行文件之前,通过ulimit -a
命令查看core文件大小,如果是0,通过ulimit -c unlimited
修改文件大小
./name
发生段错误后会产生core文件
注意 :
若没有产生core文件,可以尝试临时关闭系统错误提示(系统重启失效)
sudo service apport stop
3.进入gdb模式
gdb name
4.查看core文件
core-file core
会显示发生错误的代码位置