GDB是一套字符界面的程序集,可以用它在linux上調試C和C++程序,它提供了以下的功能:
1 在程序中設置斷點,當程序運行到斷點處暫停
2 顯示變量的值,可以打印或者監視某個變量,將某個變量的值顯示出來
3 單步執行
4 運行時修改變量的值
5 跟蹤路徑
6 線程切換
等等
下面以以下程序為例
當我們要使用GDB進行程序的調試時,在用GCC編譯時需要加上-g,如下:
GDB之所以能夠進行程序的調試也是在于進行編譯時的-g選項,當設置了這個選項的時候,GCC會向程序中塞入一下信息,作為GDB調試時的鋪墊
,然后GDB才能夠利用這些鋪墊和信息與程序交互。
有兩種方式可以進入GDB,一種就是直接在命令行上輸入gdb,然后再在gdb中用file命令加載要調試的程序:
另一種就是,直接在命令行上使用:gdb 程序名
這兩種方法都是要在GDB中加載已經做了鋪墊的將被調試的程序。
進行GDB并且加載了程序后,我們就可以進行一系列的調試操作了:
1 用 "set args 參數值1 參數值2...."來設置輸入參數
2用“list 開始的行號"來打印內容
list 還可以選取區間來打印代碼:
3.用 ”b 位置"設置斷點
4.用 “run 參數”來運行程序
5.用"display 變量名“來顯示變量
6.用”c"來繼續運行程序
7.用set命令來改變變量的值
8用q命令來退出GDB
9 用p命令來打印變量的值
10 設置條件斷點
11 用delete刪除斷點
12 用info break 來顯示斷點信息
13.用bt來顯示函數調用路徑
14用whatis或者ptype來顯示變量的類型
-
Linux
+關注
關注
87文章
11345瀏覽量
210405 -
gdb
+關注
關注
0文章
60瀏覽量
13349
發布評論請先 登錄
相關推薦
嵌入式工程師都在找的【Linux內核調試技術】建議收藏!
PLC遠程編程調試平臺是什么
![PLC遠程<b class='flag-5'>編程</b><b class='flag-5'>調試</b>平臺是什么](https://file1.elecfans.com//web2/M00/09/0B/wKgZomcE0JCAHkK9AAF_IJ1-WNM228.jpg)
ESP32-C3使用命令行GDB調試出現報錯的原因?
PLC遠程編程調試和遠程上下載程序平臺有什么功能
RISC-V 匯編語言程序的調試
ESP8266是否可以通過JTAG或SWD成功地使用J-Link進行編程和調試?
PLC遠程調試模塊是什么?PLC遠程調試模塊的功能
![PLC遠程<b class='flag-5'>調試</b>模塊是什么?PLC遠程<b class='flag-5'>調試</b>模塊的<b class='flag-5'>功能</b>](https://file1.elecfans.com//web2/M00/E8/DB/wKgaomZNll6AQ6wSAAPVgT1WpFg839.png)
使用GDB OpenOCD調試程序進行調試時,DAP \"CYW20820A1.cpu初始化失敗的原因?
使用VSCode調試嵌入式程序:如何切換gdb server
![使用VSCode<b class='flag-5'>調試</b>嵌入式程序:如何切換<b class='flag-5'>gdb</b> server](https://file1.elecfans.com/web2/M00/E4/0C/wKgaomY8PSOARA4RAAARtKGAtmg936.png)
評論