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