gdb coredump 分析堆栈

本文详细介绍了在Linux环境下如何配置系统以在程序异常时生成coredump,并指定了coredump文件的命名格式和保存路径。同时,文章还提供了如何使用gdb定位核心转储文件中的符号和行号的方法,包括通过info register rbp、x/64xg%rbp、info symbol和addr2line等命令进行具体操作。

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

1)对linux 环境做配置,当有异常生成coredump时候,指定coredump的命名格式和路径

     ulimit -S -c unlimited >/dev/null 2>&1
     echo '/tmp/core_%e.%p' > /proc/sys/kernel/core_pattern
     ulimit -c unlimited 

2)定位符号

      (gdb) info register rbp

      x/64xg %rbp      // x86_64 环境

3) 定位行号

a)
(gdb) info symbol 0x00007f9fc4a8e0d2
switch_hash_insert + 74 in section .text of switch.so
b)
objdump -t switch.so | grep "switch_hash_insert"
00000000000f2088 g     F .text    0000000000000059              switch_hash_insert
c)
0x00000000000f2088 + 0x4a (i.e. 74) = 0xf20d2
d)
addr2line -e switch.so 0xf20d2
switch_hash.c:62

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值