GDB-CoreDump调试

776 words

配置并生成崩溃信息

  1. 查看并开启core dump功能
1
2
3
4
#查看是否开启 0不开
ulimit -c
#开启core dump功能
ulimit -c unlimited
  1. 指定core dump输出目录到/opt/dump/
1
echo /opt/dump/core.%e.%p > /proc/sys/kernel/core_pattern  
  1. 执行问题程序即可,输出如下:
1
2
3
4
5
6
7
#崩溃信息
[root@test ~]# Alignment trap: not handling instruction e8502f00 at [<75f76aca>]
Unhandled fault: alignment exception (0x001) at 0x0d98b981
pgd = 98be4000
[0d98b981] *pgd=00000000

[1]- Bus error (core dumped) ./test

调试崩溃文件

可执行软件:test,产生的dump文件core-test-775

  1. 使用gdb调试程序
1
gdb test
  1. 设置程序所需的动态库路径
1
2
3
4
#查询所需库
(gdb)info sharedlibrary
#设置库路径/root/lib/和/root/lib2/,用冒号隔开
(gdb)set solib-search-path /root/lib/:/root/lib2/
  1. 打开崩溃文件
1
(gdb)core-file core-test-775
  1. 查询崩溃信息
1
(gdb)bt

设置自动加载动态库路径

  1. 修改用户目录下的~/.gdbinit
1
set auto-load safe-path /
  1. 修改程序软件的目录下的~/.gdbinit
1
set solib-search-path /root/lib/:/root/lib2/
  1. 调试崩溃信息
1
2
3
gdb test
(gdb)core-file core-test-775
(gdb)bt
Comments