【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.