Linux下的強大工具gdb的使用 詳細

2021-09-25 19:33:29 字數 2272 閱讀 4012

首先先說一下gdb是什麼東西?

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。

一般來說,gdb主要幫忙你完成下面四個方面的功能:

啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。

可讓被除錯的程式在你所設定指定的斷點處停住。(斷點可以是條件表示式)

當程式被停住時,可以檢查此時你的程式中所發生的事。

動態的改變你程式的執行環境。

讓我們在了解兩個版本:debug版本和release版本,

debug版本可以稱為「可除錯版本」,它包含了大量的除錯資訊,並且不進行任何優化,便於程式設計師除錯。debug模式下生成兩個檔案,除了生成.exe或.dll檔案外,而且生成乙個.pdb檔案,該檔案記錄了**中斷點等除錯資訊。(除錯資訊是在編譯階段就要新增到檔案中的)

release版本可以成為「發行版本」,因為它是面對使用者的,所以它不需要包含任何除錯資訊,且在編譯期間對程式進行優化,使得程式在**大小和執行速度上都是最優的。release模式下生成乙個.exe或.dll檔案。

先來看一下gdb除錯的命令:

接下來我們用乙個例子進行對其除錯:

#include#includeint add(int a,int b)

int sub(int a,int b)

int main()

gdb除錯需要的是debug版本的可執行檔案,而不需要release版本的,

所以我們編譯階段要注意加上除錯資訊,使用編譯器的-g引數可以做到這一點。

如在編譯階段時,加入除錯資訊(gcc -c main.c -g)

或者一步生成可執行檔案時加上除錯資訊(gcc -o main main.c -g)

如果沒有-g,你將看不見程式的函式名、變數名,所代替的全是執行時的記憶體位址。

我們對其進行編譯:

gcc -o  math math.o -g   // 編譯檔案,生成可執行程式,並且給檔案加上除錯資訊

1. 啟動除錯

2. 顯示main()附近的**:l

如果找的是第5行附近的**「list  5」:

3. 在某一行新增斷點:b 行號

4. 在函式入口處新增斷點:b 函式名

5.檢視斷點資訊info 斷點

6.開始執行程式run (r)

7. 逐步執行:s( step ) 遇到函式進入函式執行:

8.檢視某個變數的變化:print 變數名(p 變數名)

9.看函式的堆疊:bt

10. 結束除錯:finish

1. 退出除錯:q

以上就是所說的gdb除錯的過程與一些命令。望各位都可以熟練的使用!!!    

Linux終端下的強大工具screen的認識

使用telnet或ssh遠端登入linux時,如果連線非正常中斷,重新連線時,系統將開乙個新的session,無法恢復原來的session。screen命令可以解決這個問題。screen工具是乙個終端多路轉接器,在本質上,這意味著你能夠使用乙個單一的終端視窗執行多終端的應用。基本命令 開乙個會話,並...

Linux終端下的強大工具screen的認識

使用telnet或ssh遠端登入linux時,如果連線非正常中斷,重新連線時,系統將開乙個新的session,無法恢復原來的session。screen命令可以解決這個問題。screen工具是乙個終端多路轉接器,在本質上,這意味著你能夠使用乙個單一的終端視窗執行多終端的應用。基本命令 開乙個會話,並...

linux下的程式除錯工具gdb

這裡只列舉最最常用的gdb命令。gdb program 準備除錯程式。也可以直接進入gdb,再通過file命令載入。run args 開始執行程式,run後面可以加程式需要的引數,就像在命令列正常執行時那樣。s n si c kill s即step in,進入下一行 執行 n即step next,執...