GDB除錯多檔案程式

2021-06-09 19:04:23 字數 735 閱讀 6593

以前用gdb除錯都只是除錯單個的檔案,在做dhcp二級relay的時候需要對整個工程進行gdb除錯,發現自己竟然不會!現在終於惡補上了,發到部落格上與大家分享。

下面就以我除錯isc dhcp**為例來說一下除錯的過程

首先啟動dhcrelay:sudo gdb dhcrelay

由於dhcrelay的啟動是需要加引數的,所以用到set args:set args –d –i eth0 –m forward 192.168.10.1

在main函式中斷點位置設定在分包函式這:b dhcrelay.c:362 (注意:這一行的位置是dispatch函式被呼叫的地方,而dispatch函式的實現在../common目錄下dispatch.c中)

同時需要在dispatch.c中的dispatch函式這裡設定乙個斷點,所以要將common目錄載入進來(之前一直不會除錯多檔案的原因就是不會這一行的命令):dir ../common

再檢視dispatch函式的行數:list dispatch.c:dispatch (可以看到dispatch函式在86行)

在dispatch函式這設定斷點:b dispatch.c:86

最後啟動程式,執行:run

注意:如果dispatch.c檔案跟dhcrelay.c檔案在同一目錄下,就不需要使用dir ../common來指定目錄了,在設好斷點後直接在gdb提示符後輸入s,然後回車,就可以進入到dispatch.c檔案中去了!!!

使用gdb除錯守護程序的時候會有問題

gdb除錯多流程程式

預設設定下,在除錯多程序程式時gdb只會除錯主程序。但是gdb v7.0 支援多程序的分別以及同時除錯,換句話說,gdb可以同時除錯多個程式。只需要設定follow fork mode 預設值 parent 和detach on fork 預設值 on 即可。設定方法 set follow fork...

GDB 多檔案 不同資料夾除錯

1.首先保證gcc flag 要有 g 圖為cmakelists.txt的c flags設定 2.對於執行檔案和原始檔不在同乙個資料夾的情況,在gdb執行的情況下,如圖 test pipeline為可執行檔案,用gdb開啟 3.在開啟的gdb命令列下,輸入r run命令 一定要執行,至少我測試了很多...

程式除錯gdb基礎

gcc 編譯器 gcc是linux平台下最重要的開發工具,它是gnu的c和c 編譯器,它總共提供的編譯選項超過100個,但只有少數幾個會被頻繁使用,收集如下。其基本用法為 gcc options filenames 最簡單的編譯方法是不指定任何編譯選項,會為目標程式生成預設的檔名a.out o 為將...