GDB除錯技巧總結

2022-07-20 03:09:09 字數 677 閱讀 8856

一、除錯子程序

gdb除錯多程序時預設追蹤父程序。切換到預設開始除錯子程序的命令:set follow-fork-mode child。這個命令是要在除錯前使用。

二、同時除錯父子程序

要同時除錯父程序和子程序,可以使用「set detach-on-fork off」(預設detach-on-fork是on)命令,這樣gdb就能同時除錯父子程序,並且在除錯乙個程序時,另外乙個程序處於掛起狀態。預設情況,是會將子程序分離出去,父程序會變為init,該子程序獨立執行,不受gdb控制。

讓父子程序都同時執行,可以使用「set schedule-multiple on」(預設schedule-multiple是off)命令。

gdb每個除錯的程序都會以inferior來記錄,所以我們可以通過「info inferiors」來檢視當前偵錯程式除錯的程序有哪些,還可以在除錯過程中通過「inferior inferior號」來切換。

三、除錯已經執行的程式

方法一:gdb program pid

方法二:先啟動gdb,後attach pid 

GDB除錯技巧

在公司工作了一段時間,發現 b s結構的 除錯很麻煩,經常用的手段是通過 printf 打一串訊息來進行跟蹤,然後估計問題出在 通過逐步新增 printf 語句,獲得越來越多的資訊最終確定問題的根源。我感覺這樣比較麻煩,如果能把 gdb的單步除錯功能用上就好了。工作之餘,做了一定的嘗試,希望對跟我一...

GDB除錯技巧

談到gdb,不能不對他的強大功能所折服,在我所用過的所有偵錯程式中,這實在是乙個強大的除錯工具,今天就說說gdb的簡單用法。gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在 unix平台下做軟體,你會發現...

gdb除錯技巧

1 以結構體形式訪問某個記憶體 print type addr 其中type是結構體型別,addr是記憶體的位址 2 顯示符號表 info symbol info symbol symbol addr symbol addr為對應的位址 print 符號名 3 檢視型別的原型定義 有時候在除錯大型程...