2.1 啟動調(diào)試
在程序開始調(diào)試之前,要確保程序在gcc、g++編譯時,有如下-g的添加調(diào)試信息的選項
gcc -g test.c -o test
1、啟動未運行的程序
啟動未運行的程序,只需要在對應(yīng)程序目錄中使用下面的命令
gdb test
2、調(diào)試已經(jīng)開始運行的程序進程
調(diào)試已經(jīng)開始運行的程序進程,首先先用top命令查看運行的程序進程的pid如下:
比如我要加載的程序qemu-system-x86的pid為269427,則用下面的命令將進程附加到GDB調(diào)試
gdb attach 269427#gdb attach [進程號]
或者先打開gdb,在gdb中輸入attach 269427也可以。效果如下
此時程序是處于暫停狀態(tài)的,用下面的命令讓程序繼續(xù)運行
#前面是縮寫,#后是全寫,兩者皆可
(gdb) c#continue
效果如下:
2.2 斷點管理
添加斷點
?方法一
#源程序只有一個文件
b [行號]#break [行號]
?方法二
#源程序多個個文件
b [文件名.c]:[行號]#break [文件名.c]:[行號]
添加斷點后如下所示:
查看所有斷點
info b#info break
效果如下:
我們可以看到所有的斷點還有斷點的編號
刪除斷點
delete#刪除所有斷點
delete [斷點編號]#刪除指定斷點
2.3 中斷調(diào)試執(zhí)行
s#step 單步執(zhí)行,進入函數(shù)調(diào)用
n#next 逐行執(zhí)行當(dāng)前線程的代碼,不進入函數(shù)調(diào)用
c#continue 執(zhí)行代碼到下一個斷點
f#finish 執(zhí)行完當(dāng)前函數(shù)并跳出
ignore [斷點號] [次數(shù)]#設(shè)置或修改運行時斷點的忽略計數(shù)
2.4 運行參數(shù)監(jiān)控
p [變量名]#print [變量名] 輸出該變量的值
display [變量名]#調(diào)試運行的每一步自動輸出該變量的值
bt#顯示當(dāng)前的函數(shù)調(diào)用堆棧情況
list [行數(shù)]#顯示當(dāng)前執(zhí)行的代碼,默認(rèn)10行
watch [變量名]#設(shè)置變量監(jiān)視點,在變量值改變時暫停程序。
info breakpoints#顯示當(dāng)前已設(shè)置的斷點列表。
info watchpoints#顯示當(dāng)前已設(shè)置的監(jiān)視點(觀察點)列表。
info functions#顯示程序中定義的所有函數(shù)列表。
info variables#顯示程序中定義的所有全局變量和靜態(tài)變量列表。
info locals#顯示當(dāng)前函數(shù)的局部變量信息。
info args#顯示當(dāng)前函數(shù)的參數(shù)信息。
info threads#顯示當(dāng)前正在運行的所有線程信息。
info registers#顯示當(dāng)前線程的寄存器值。
info frame#顯示當(dāng)前的調(diào)用幀信息。
info sharedlibrary#顯示加載的共享庫信息。
info inferior#顯示當(dāng)前程序的執(zhí)行狀態(tài)信息。
info record#顯示反復(fù)執(zhí)行的命令數(shù)量。
info breakpoints location < address >#顯示指定地址上設(shè)置的斷點信息。
info break
2.5 多線程調(diào)試
info thread#命令查看當(dāng)前線程的信息
info threads#命令查看當(dāng)前所有線程
frame [棧幀號] #命令切換到指定的棧幀
thread [線程號]#切換到指定線程
-
程序
+關(guān)注
關(guān)注
117文章
3797瀏覽量
81439 -
調(diào)試工具
+關(guān)注
關(guān)注
1文章
49瀏覽量
12666 -
gdb
+關(guān)注
關(guān)注
0文章
60瀏覽量
13350
發(fā)布評論請先 登錄
相關(guān)推薦
請問如何建立開發(fā)環(huán)境
VIM編輯器怎么實現(xiàn)對嵌入式軟件的調(diào)試功能?
VIM中怎么實現(xiàn)嵌入式軟件調(diào)試?
如何搭建嵌入式Linux的GDB調(diào)試環(huán)境
基于Windows的ARM GCC開發(fā)環(huán) 境
N32G031系列GCC開發(fā)環(huán)境應(yīng)用筆記分享
嵌入式Linux和嵌入式Linux開發(fā)環(huán)境
![嵌入式Linux和嵌入式Linux開發(fā)環(huán)境](https://file.elecfans.com/web2/M00/48/7E/pYYBAGKhtAmAXVN-AAA7xWfhV3Q085.jpg)
如何在VIM中對嵌入式軟件進行調(diào)試
![如何在VIM中對嵌入式軟件進行<b class='flag-5'>調(diào)試</b>](https://file1.elecfans.com//web2/M00/A5/EB/wKgZomUMOsuAEO32AAARxzMbUKQ954.gif)
初學(xué)GDB調(diào)試工具需要注意的事項
![初學(xué)<b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試工具</b>需要注意的事項](https://file.elecfans.com/web1/M00/92/5B/pIYBAFzdMTaAY_ZFAABrNEk8FS8344.png)
STM32CubeIDE乃ST官方提供的免費且功能強大的集成開發(fā)工具
![STM32CubeIDE乃ST官方提供的免費且功能強大的集成開發(fā)<b class='flag-5'>工具</b>](https://file.elecfans.com/web1/M00/E8/22/o4YBAGBkJKCAVFdzAAA2MxV2CvI881.png)
Linux嵌入式 gdb VSCode圖形化調(diào)試教程
![Linux嵌入式 <b class='flag-5'>gdb</b> VSCode圖形化<b class='flag-5'>調(diào)試</b>教程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論