[問題] 如何在opensource軟體使用gdb去degub(trace)

看板C_and_CPP (C/C++)作者 (Fighting)時間15年前 (2011/04/20 19:49), 編輯推噓4(405)
留言9則, 4人參與, 最新討論串1/1
小弟不才,有請各位高手 在linux環境下 裝了一套opensource,而因為需要修改其內的某library 故去trace且修改 想用gdb去看其相關的function pointer 的address 因為程式過於龐大,想要去看他lib中的function去哪裡呼叫 但因為都編成share lib,且執行時也是用指令 所以不知道如何去load進某個.so 且在gdb下不知要如何像使用平常的指令去執行 請教各位大大,假設要在linux 下trace大型軟體或比較多檔案的程式碼 要如何去trace??? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.241.189

04/20 23:17, , 1F
vi+ctags
04/20 23:17, 1F

04/20 23:25, , 2F
用Codeblocks,在想要觀察的原始碼上面下中斷點
04/20 23:25, 2F

04/20 23:35, , 3F
gdb預設會自動load.建議先run到main再設,不然so與symbols
04/20 23:35, 3F

04/20 23:36, , 4F
還沒load進來. 如果你是cross/remote debugging,應該要再
04/20 23:36, 4F

04/20 23:36, , 5F
設sysroot與solib-search-path,不然會找錯so.
04/20 23:36, 5F

04/20 23:37, , 6F
反查addr對應的sym可用 info sym [address]
04/20 23:37, 6F

04/20 23:38, , 7F
在linux上的話,我比較建議用nemiver,純gdb front-end
04/20 23:38, 7F

04/20 23:39, , 8F
雖然他本身bug很多,但直接load檔就可以debug了
04/20 23:39, 8F

04/21 02:08, , 9F
我覺得問題點應該是在編譯lib的時候要加上-g吧.....?
04/21 02:08, 9F
文章代碼(AID): #1DhiXBI7 (C_and_CPP)
文章代碼(AID): #1DhiXBI7 (C_and_CPP)