您好,登錄后才能下訂單哦!
小編給大家分享一下GDB如何調試,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Gcc編譯過程主要的4個階段:
l 預處理階段,完成宏定義和include文件展開等工作;(.i)
l 根據編譯參數進行不同程度的優化,編譯成匯編代碼(.s.S)
l 用匯編器把匯編代碼進一步生成目標代碼(.o)
l 用連接器把生成的目標代碼和系統或用戶提供的庫連接起來,生成可執行文件
格式:
l gcc -E test.c//預處理階段
l Gcc -S test.c//編譯階段
l Gcc -c test.c//匯編階段
l Gcc -o test test.c//鏈接階段
Gdb的功能:
l 設置斷點
l 監視程序變量的值
l 程序的單步執行
l 顯示、修改變量的值
l 顯示、修改寄存器
l 查看程序的堆棧情況
l 遠程調試
Gdb調試過程:
1、程序經過預處理后,即進入編譯階段,進入編譯階段,首先聲明編譯:
2、格式:gcc-o test test.c -g
3、進入編譯:gdb test
4、顯示需要編譯調試的源程序:l(list)//list filename
5、設置斷點:b(break)行號
6、查看設置的斷點:info b
7、運行調試程序:run
8、跳到下一個斷點:c(continue)
9、單步運行的話使用:n(next)/s(step into)跳到函數體 //區別在與:next執行函數體,而step不執行函數體
10、調試過程中查看某個變量的變化:print i (每次都要手動設置)//display i(設置一次一直尾隨,直到用“undisplay 變量標號” 停止)
11、退出當前的調試使用finish 跳出函數
12、清楚斷點 clear 行號
13、Delete 斷點信息序號// 刪除所有斷點或設置的要刪除的斷點
14、退出調試 q
15、b num if i==20 設置斷點的觸發條件
16、condition num i==50 改變斷點的觸發條件
17、GDB中源代碼查看命令
list /l 行號或函數名 //查看指定位置代碼
list <linenum> //顯示程序第linenum行的周圍的源程序
list <function> //顯示函數名為function的函數的源程序
list // 顯示當前行后面的源程序
list <filename:funtion> //顯示哪個文件中的哪個函數的源程序
eg: list src/fun1.c:fun1
list <filename:linenum> //哪個文件的哪一行周圍的源程序
eg:list src/fun1.c:1
看完了這篇文章,相信你對“GDB如何調試”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。