每天學點GDB 2

2021-09-06 08:43:54 字數 749 閱讀 9324

在一中提到gdb最最基本的用法,在本節主要講述一下如何讓gdb在斷點處列印一下診斷資訊,但程式執行本身不會中斷。

先稍微改一改源程式

#include #include int main(int argc, char** argv) 

return 0;

}

假設要在執行期間檢視i值的變化。如果是step by step的辦法,具體步驟如下。

設定斷點

gdb)break 8

執行程式

gdb)run

在斷點處停止執行,執行如下指令顯示i的值

gdb)p i

繼續程式執行

gdb)continue

上述步驟會一直重複出現,如果想一次性設定後,讓程式執行不因斷點設定而中斷,可採用下述辦法。

gdb)commands

type commands for breakpoint(s) 1, one per line.

end with a line saying just "end".

>silent

>p i

>conti

>end

輸入end表示在斷點處的批處理結束,再次回到gdb。

p i 表示指印i的值

conti 表示繼續程式執行

gdb)run

這樣每次在斷點處會自動列印變數i的值,並繼續執行剩下的程式。

每天學點GDB(二)

預設情況下,日誌是沒有開啟的,所有的除錯資訊都會在螢幕中顯示,即預設是輸出到stdout中的。那麼有沒有可能將輸出到螢幕中的內容儲存到檔案裡呢。答案自然是肯定的,這裡面有個地方遇要注意一下子,具體會在下面的示例中提及。將日誌檔案開啟,不指定檔名的話,預設的檔名是gdb.txt。gdb set log...

每天學點GDB 3

預設情況下,日誌是沒有開啟的,所有的除錯資訊都會在螢幕中顯示,即預設是輸出到stdout中的。那麼有沒有可能將輸出到螢幕中的內容儲存到檔案裡呢。答案自然是肯定的,這裡面有個地方遇要注意一下子,具體會在下面的示例中提及。將日誌檔案開啟,不指定檔名的話,預設的檔名是gdb.txt gdb set log...

每天學點GDB 8

使用gdb來進行stl容器的除錯 現代c 中stl使用的越來越普遍,較之其它型別,stl容器類的除錯顯得複雜度更好。本篇以map為例說明如何利用gdb來遍歷map中的各成員變數。原始碼如下 include include include using namespace std int main in...