gdb高階除錯命令

绍荣發表於2024-07-08
  • 斷點

    • 條件斷點
      • condition 1 value==1: 此次的1表示break的編號,之後的value==1表示條件判斷;即在value為1時,命中編號為1的斷點;
      • ignore 1 4: 忽略斷點為1的前4次命中,第5次開始,就需要命中;
    • d br: 刪除所有的斷點
  • 列印

    • p /t var-name: 列印變數名var-name的二進位制內容;
  • 如何定位動態庫中的程式碼

    當編譯debug時,符號檔案會嵌入到可執行檔案中(這一點不像Windows下的可執行檔案和符號檔案,它們是分開的。)

    只有在gdb中start執行起來之後,才會載入動態庫,之後才可以對動態庫的程式碼進行斷點設定。在main函式之後,先設定一個斷點,之後就可以設定動態庫的程式碼。動態庫載入之後,可以使用如下命令進行參考:

    • i sharedlibrary: 檢視已經載入的動態庫;
    • b 動態庫中的程式碼所在的檔案:行號:定位動態庫中的所在檔案的行號;
    • b 類名:函式名: 可以定位某一個類中的函式;

相關文章