2012-09-01 68 views
5

我的第三部分庫函數調用分散在我的可執行文件中的很多地方。我的可執行文件使用調試符號構建,但第三方庫沒有調試符號,因此我不能在函數上放置斷點。我希望在調用庫函數時放置一個斷點來檢查調用堆棧。 如何在我的可執行文件中調用庫函數調用的所有調用時設置斷點。如何在gdb中爲函數的所有調用設置斷點?

+0

看來,即使沒有調試符號,鏈接器將不得不知道函數的名稱 - >地址映射,所以我無法弄清楚爲什麼你不能在它上面放置一個斷點。你確定它不在你試圖放置斷點後加載的共享庫中嗎? –

回答

4

我認爲,唯一的辦法就是:

  • 在代碼中發現這個函數的任何調用;
  • 在該行中創建一個斷點;
  • 運行調試器並停在那裏;
  • 寫入gdb nexti得到第一條功能指令;
  • 得到當前的eip,它將指向該函數的開始處;
  • 在eip指出的地址創建一個新的斷點;
相關問題