Linux下使用GDB生成core file文件并显示程序出错位置

在Linux系统中,可以通过修改core_pattern来设定corefile的保存路径和命名规则,如设置为./core.%t.%e.%p。然后使用ulimit-cunlimited允许程序生成无限制大小的corefile。当程序出现Segmentationfault时,corefile将被创建。接着用GDB加载corefile和程序执行文件,通过bt或where命令可以追溯到出错的代码行,例如在node.cpp的第40行。

Linux下使用GDB生成core file文件并显示程序出错位置

1.1 打开终端(在可执行文件的目录下), 修改core file的生成位置

echo './core.%t.%e.%p' | sudo tee /proc/sys/kernel/core_pattern

1.2 查看修改是否成功

cat /proc/sys/kernel/core_pattern 

2.1 设置core文件的最大值

ulimit -c unlimited 

2.2 查看修改是否成功

ulimit -c

3.1 按照正常操作运行需要debug的程序

./[exec file]
 Segmentation fault (core dumped) 
 注意: 出现(core dumped) ,就会在终端所在目录下生成 core file

4.1 gdb运行需要debug的程序并加载core file

gdb ./[exec file] [core file]

4.2 然后输入并执行命令 bt 或 where, 显示出错的代码行号

(gdb) bt (or) where
会得到类似于下面的信息:
#1  0x000055b0aed4593d in main() at node.cpp:40
于是, 通过终端打印可知:程序是在node.cpp的第40行出了问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值