gdb调试core环境配置
-
启动gdb调试bin和core
~/PATH/TO/CROSS/COMPILE/TOOLCHAINS$ ./A_platform-aarch64-gdb BIN_FILE CORE-FILE
-
提示so找不到,需要设置so search path;
使用:
set solib-search-path /PATH/TO/CROSS/COMPILE/TOOLCHAINS/SYSROOT/:/SOME/SELF/COLLECTED/SO/LIBS/ -
未load symbol的库需要单出处理
设置search path之后,一个库提示
libABC.so.3 could not be validated and will be ignored.
0x000000007816f000 0x0000000078194590 Yes /SOME/SELF/COLLECTED/SO/LIBS/libABCDE.so(找到的so)
No /PATH/TO/CROSS/COMPILE/TOOLCHAINS/libABC.so.3(未找到的so)
对于这个库,从系统镜像里find, pull,出来,放到一个solib-search-path下面,比如sysrootlibs. 然后重置下 solib-search-path就可以load成功
0x000000007816f000 0x0000000078194590 Yes /SOME/SELF/COLLECTED/SO/LIBS/libABCDE.so
0x0000000078195000 0x00000000781df3e8 Yes (*) /PATH/TO/CROSS/COMPILE/TOOLCHAINS/libABC.so.3
其他找不到,或无法validate的库,类似操作;
- 最后,core文件的bt
(gdb) bt
#0 __strlen_isr () at /A/B/C/D/lib/c/string/aarch64/strlen.S:147
#1 0x00000000101513bc in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
gdb调试core命令
-
查看所有线程正在运行的指令信息
info threads -
打开所有线程的堆栈信息
thread apply all bt -
查看指定线程堆栈信息:threadapply threadID bt,如:
thread apply 6 bt -
进入指定线程栈空间
thread threadID -
查看堆栈
bt
where -
查看库加载情况
info sharedlibrary