gdb:产生core文件

转载地址: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

posted @   He_LiangLiang  阅读(664)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示