转载地址:https://blog.csdn.net/jiemashizhen/article/details/125016646
core文件是调试段错误的重要手段,默认情况下是不会生成core文件的,可通过如下方式对生成core文件进行设置:
1.打开core开关
可以先通过ulimit -c,进行查看,如果输出为0,表示不会生成core文件
可以通过ulimit -c [filesize] 或 ulimit -c unlimited 对core文件的大小进行设置
如果希望每次打开bash这个设置都处于生效状态,可以把ulimit -c unlimited写入bash配置文件:~/.bashrc
2.core文件的生成位置和名字
core文件的生成位置配置在文件:/proc/sys/kernel/core_pattern
core文件的命名方式:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
比如想产生指定在当前目录下,生成的core文件名格式为:命令名-pid-时间戳
可执行(root身份):
echo "./core-%e-%p-%t" > /proc/sys/kernel/core_pattern
注:
Ubuntu20.04的apport服务每次开机后会自动重写这个文件,如果不使用apport,可以将配置文件/etc/default/apport的enable设置为0来关闭apport。
3.编译选项
编译程序的时候还需要为gcc/g++添加-g选项
自此,如果程序产生了段错误,即可通过gdb启动调试:
gdb [bin_file] [core_file]
————————————————
版权声明:本文为CSDN博主「风静如云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiemashizhen/article/details/125016646