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

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

被折叠的 条评论
为什么被折叠?



