用gdb调试core dump

本文详细介绍了如何通过修改系统配置实现coredump的开启与重命名,使用GDB进行coredump文件的调试,包括查看backtrace、调用函数及函数中变量的方法。适用于希望深入了解程序崩溃原因的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 开启core dump

在/etc/profile最后加上下面这行

ulimit -c unlimited

2. 程序发生段错误生成core dump

$./test

3. 用gdb调试core dump.

可执行程序最好是用-g编译生成的.

$gdb ./test corefile

(gdb) bt
(gdb) bt full
(gdb) info threads
(gdb) thread apply all bt
(gdb) thread apply all bt full

4. 查看backtrace的某一级调用函数

若是, 一共有3级调用, 如下.

1. test1()
2. test2()
3. test3()

想看 函数2, 请敲入

f 2

5. 查看函数中的变量

看某个变量的值, 譬如val

p val

看某个指针, 譬如指针p1, 对应的内存区域里的值,

x/64x p1

6. 重命名core dump文件名

多个进程同时core dump时,为避免相同的core dump文件名被覆盖,可以使core dump出来的文件带着进程ID号。
在/etc/sysctl.conf最后,添加新的一行

kernel.core_uses_pid = 1

执行如下命令

sudo sysctl -p

查看设置效果

cat /proc/sys/kernel/core_uses_pid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值