操作系统:Ubuntu 20.04
使用语言环境:C&C++
在运行程序过程中如果出现该问题,出现这个错误往往是因为代码内部问题,运行的时候是看不到详细错误原因的,只会提示Segmentation fault (core dumped)
,这时候需要使用GDB(“GNU symbolic debugger”)进行调试。
调试命令是:
gdb path/to/the/binary path/to/the/core/dump/file
path/to/the/binary
指的是生成的二进制程序文件,path/to/the/core/dump/file
是指core dump文件的位置,通常core dump生成是依赖于Apport,在运行前需要确认系统是否启用了该服务:
sudo systemctl enable apport.service
或
sudo service apport start
PS:注意path/to/the/core/dump/file
,由于很多网络上很多相关资料都比较早,老版本Ubuntu生成的core dump默认路径是在"/var/crash/"(但我只能找到一个xxxx.crash文件,其实可以用crash文件手动生成core dump文件,但太麻烦了),在20.04版本上以相同路径查找的是找不到的,较新版本Ubuntu的core dump文件默认位置其实位于/var/lib/apport/coredump
,格式应该是类似于:
应该是16.04版本之后更换了保存位置,当然也可以另外对保存路径进行设置,有需要的可以参考:http://sunyongfeng.com/201609/programmer/tools/coredump