GDB是GNU開源組織發布的一個強大的UNIX下的程序調試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調試,但如果你是在UNIX平台下做軟件,你會發現GDB這個調試工具有比VC、BCB的圖形化調試器更強大的功能。所謂“寸有所長,尺有所短”就是這個道理。
一般來說,GDB主要幫忙你完成下面四個方面的功能:
●啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。
●可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)
●當程序被停住時,可以檢查此時你的程序中所發生的事。
●動態的改變你程序的執行環境。
調試指令:
gdb+a.out
l :從main函數開始開始
l + 行號
l + 函數名
b + 行號:設斷點
b + 函數名
i b:查看斷點信息
r:執行(有斷點則在第一個斷點處停下來)
n:單步向下執行
s:單步執行,且可以進入函數
print +內容:打印內容
whatis +內容:查看該內容的類型
d +編號:刪除編號處(不是行號)的斷點。
b +行號 if i==9:設置條件斷點
finish:執行到當前函數返回處(退出函數)
bt:打印棧幀關系
●啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。
●可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)
●當程序被停住時,可以檢查此時你的程序中所發生的事。
●動態的改變你程序的執行環境。
調試指令:
gdb+a.out
l :從main函數開始開始
l + 行號
l + 函數名
b + 行號:設斷點
b + 函數名
i b:查看斷點信息
r:執行(有斷點則在第一個斷點處停下來)
n:單步向下執行
s:單步執行,且可以進入函數
print +內容:打印內容
whatis +內容:查看該內容的類型
d +編號:刪除編號處(不是行號)的斷點。
b +行號 if i==9:設置條件斷點
finish:執行到當前函數返回處(退出函數)
bt:打印棧幀關系
首先直接列出問題及其解決方法:設置a.cpp:1234這樣的斷點后(斷點位於.so文件中),gdb知道停在哪個函數,並能夠停下來,但是無法顯示源文件名及行號,也無法看到源碼。明顯是gdb有問題或者是調試信息有問題,我試遍了-g , -gstabs , -ggdb , -gstabs+參數,最終,-gstabs+參數可以和我的gdb完美配合,輸出了我想要的東西,能夠在debug的時候正確的看到函數名,行號,並能正確的看到源代碼。這段話是在我解決問題之后添加在原文章之前的。供快速參考。好了,現在來看一個一般性的問題:有時候在用gdb調試程序的時候,發現gdb找不到源碼。用list命令無效。記住: gdb的調試信息中並不包含源碼,只是包含了怎樣去尋找源碼,但是因為某種原因,比如你的源碼轉移了位置或者別的原因。你需要告訴gdb到哪里去尋找源碼。這個通過directory命令來實現。 要查看當前gdb尋找源碼的路徑:show directories添加一個新的路徑到查找路徑:dir dirname添加多個時,個dirname用: 分開。詳細見 : http://ftp.gnu.org/old-gnu/Manuals/gdb-5.1.1/html_node/gdb_48.html 另外:有時候發現調試信息不正確,或者沒有調試信息,而gcc在編譯的時候使用的參數為-g ,這時,可以個參數-g 該為-gstabs 就可以了。 我現在碰到的就是這種情況,具體原因還不是很清楚。當利用-gstabs編譯以后,程序在停下來的時候,會顯示函數堆棧,每個棧會顯示源文件以及行數,但是源代碼還是列不出來,原因是directory還沒有設好 。后來發現-gstabs編譯后,有些源碼的位置被弄錯了。繼續嘗試-gstabs+ , 最終才看到期望的效果。 需要后續的去了解下這幾個參數之前的區別以及為什么要這么用。
---------------------
作者:sunxiaopengsun
來源:CSDN
原文:https://blog.csdn.net/sunxiaopengsun/article/details/79445300
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
---------------------
作者:龍躍十二
來源:CSDN
原文:https://blog.csdn.net/qq_38646470/article/details/79901401
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
---------------------
作者:sunxiaopengsun
來源:CSDN
原文:https://blog.csdn.net/sunxiaopengsun/article/details/79445300
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
---------------------
作者:龍躍十二
來源:CSDN
原文:https://blog.csdn.net/qq_38646470/article/details/79901401
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!