天天看點

【GDB】GDB調試總目錄【gdb&core】Linux中gdb 檢視core堆棧資訊1

【gdb&core】Linux中gdb 檢視core堆棧資訊1​​

【GDB】GDB 調試多線程和多程序總結​

【調試】Linux檢視程式卡死位置方法|GDB|strace|分析程序調用pstack和starce​

【GDB】VisualStudio 2017跨平台(Linux)調試|可視化GDB|visual GDB​

【GDB】GDB工作原理--ptrace(讓父程序可觀察和控制其它程序、檢查和改變其核心映像及寄存器)​

linuxGDB下動态連結庫的調試

(gdb) file <你的exe>

(gdb) load <你的so>                #這條應該是可選的

(gdb) dir <so'dir>

(gdb) sharedlibrary <你的so>

(gdb) breakpoint <你的so中somewhere>

(gdb) run

load 是将動态庫加載入記憶體。

sharedlibrary是将動态庫的符号讀入gdb,為了你能找到變量和函數名。

它們本身是沒有明顯的動作,但後面當你直接設定斷點到動态庫的函數(或行号)時,你就可以成功了。在此之前要記得用dir将動态庫的源碼也加入搜尋路徑。

報錯記錄

(gdb) b mps_guide_db.c:1699

No source file named mps_guide_db.c.

可能是因為調用了動态庫,要打斷點的檔案是動态庫的

可以通過 以下方式得到解決:

(gdb) set breakpoint pending on

(gdb) b db_subscr_no_lookup

Function "db_subscr_no_lookup" not defined.

Breakpoint 1 (db_subscr_no_lookup) pending.