資料介紹
3.4 gdb調試器
調試是所有程序員都會面臨的問題。如何提高程序員的調試效率,更好、更快地定位程序中的問題從而加快程序開發的進度,是大家都很關注的問題。就如讀者熟知的Windows下的一些調試工具,如Visual Studio自帶的設置斷點、單步跟蹤等,都受到了廣大用戶的贊賞。那么,在Linux下有什么很好的調試工具呢?
gdb調試器是一款GNU開發組織并發布的UNIX/Linux下的程序調試工具。雖然,它沒有圖形化的友好界面,但是它強大的功能也足以與微軟的Visual Studio等工具媲美。下面就請跟隨筆者一步步學習gdb調試器。
3.4.1 gdb使用流程
這里給出了一個短小的程序,由此帶領讀者熟悉gdb的使用流程。建議讀者能夠動手實際操作一下。
首先,打開Linux下的編輯器vi或者emacs,編輯如下代碼(由于為了更好地熟悉gdb的操作,筆者在此使用vi編輯,希望讀者能夠參見3.3節中對vi的介紹,并熟練使用vi)。
/*test.c*/
#include 《stdio.h》
int sum(int m);
int main()
{
int i, n = 0;
sum(50);
for(i = 1; i《= 50; i++)
{
n += i;
}
printf(“The sum of 1-50 is %d \n”, n );
}
int sum(int m)
{
int i, n = 0;
for (i = 1; i 《= m; i++)
{
n += i;
printf(“The sum of 1-m is %d\n”, n);
}
}
在保存退出后首先使用gcc對test.c進行編譯,注意一定要加上選項“-g”,這樣編譯出的可執行代碼中才包含調試信息,否則之后gdb無法載入該可執行文件。
[root@localhost gdb]# gcc -g test.c -o test
雖然這段程序沒有錯誤,但調試完全正確的程序可以更加了解gdb的使用流程。接下來就啟動gdb進行調試。注意,gdb進行調試的是可執行文件,而不是如“.c”的源代碼,因此,需要先通過gcc編譯生成可執行文件才能用gdb進行調試。
[root@localhost gdb]# gdb test
GNU gdb Red Hat Linux (6.3.0.0-1.21rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as “i386-redhat-linux-gnu”。..Using host libthread_db library “/lib/libthread_db.so.1”。
(gdb)
可以看出,在gdb的啟動畫面中指出了gdb的版本號、使用的庫文件等信息,接下來就進入了由“(gdb)”開頭的命令行界面了。
(1)查看文件。
在gdb中鍵入“l”(list)就可以查看所載入的文件,如下所示。
注意在gdb的命令中都可使用縮略形式的命令,如“l”代表“list”,“b”代表“breakpoint”,“p”代表“print”等,讀者也可使用“help”命令查看幫助信息。
(gdb) l
1 #include 《stdio.h》
2 int sum(int m);
3 int main()
4 {
5 int i,n = 0;
6 sum(50);
7 for(i = 1; i 《= 50; i++)
8 {
9 n += i;
10 }
(gdb) l
11 printf(“The sum of 1~50 is %d \n”, n );
12
13 }
14 int sum(int m)
15 {
16 int i, n = 0;
17 for(i = 1; i 《= m; i++)
18 {
19 n += i;
20 }
21 printf(“The sum of 1~m is = %d\n”, n);
20 }
可以看出,gdb列出的源代碼中明確地給出了對應的行號,這樣就可以大大地方便代碼的定位。
(2)設置斷點。
設置斷點是調試程序中一個非常重要的手段,它可以使程序運行到一定位置時暫停。因此,程序員在該位置處可以方便地查看變量的值、堆棧情況等,從而找出代碼的癥結所在。
在gdb中設置斷點非常簡單,只需在“b”后加入對應的行號即可(這是最常用的方式,另外還有其他方式設置斷點),如下所示:
(gdb) b 6
Breakpoint 1 at 0x804846d: file test.c, line 6.
要注意的是,在gdb中利用行號設置斷點是指代碼運行到對應行之前將其停止,如上例中,代碼運行到第6行之前暫停(并沒有運行第6行)。
(3)查看斷點情況。
在設置完斷點之后,用戶可以鍵入“info b”來查看設置斷點情況,在gdb中可以設置多個斷點。
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x0804846d in main at test.c:6
用戶在斷點鍵入“backrace”(只輸入“bt”即可)可以查到調用函數(堆棧)的情況,這個功能在程序調試之中使用非常廣泛,經常用于排除錯誤或者監視調用堆棧的情況。
調試是所有程序員都會面臨的問題。如何提高程序員的調試效率,更好、更快地定位程序中的問題從而加快程序開發的進度,是大家都很關注的問題。就如讀者熟知的Windows下的一些調試工具,如Visual Studio自帶的設置斷點、單步跟蹤等,都受到了廣大用戶的贊賞。那么,在Linux下有什么很好的調試工具呢?
gdb調試器是一款GNU開發組織并發布的UNIX/Linux下的程序調試工具。雖然,它沒有圖形化的友好界面,但是它強大的功能也足以與微軟的Visual Studio等工具媲美。下面就請跟隨筆者一步步學習gdb調試器。
3.4.1 gdb使用流程
這里給出了一個短小的程序,由此帶領讀者熟悉gdb的使用流程。建議讀者能夠動手實際操作一下。
首先,打開Linux下的編輯器vi或者emacs,編輯如下代碼(由于為了更好地熟悉gdb的操作,筆者在此使用vi編輯,希望讀者能夠參見3.3節中對vi的介紹,并熟練使用vi)。
/*test.c*/
#include 《stdio.h》
int sum(int m);
int main()
{
int i, n = 0;
sum(50);
for(i = 1; i《= 50; i++)
{
n += i;
}
printf(“The sum of 1-50 is %d \n”, n );
}
int sum(int m)
{
int i, n = 0;
for (i = 1; i 《= m; i++)
{
n += i;
printf(“The sum of 1-m is %d\n”, n);
}
}
在保存退出后首先使用gcc對test.c進行編譯,注意一定要加上選項“-g”,這樣編譯出的可執行代碼中才包含調試信息,否則之后gdb無法載入該可執行文件。
[root@localhost gdb]# gcc -g test.c -o test
雖然這段程序沒有錯誤,但調試完全正確的程序可以更加了解gdb的使用流程。接下來就啟動gdb進行調試。注意,gdb進行調試的是可執行文件,而不是如“.c”的源代碼,因此,需要先通過gcc編譯生成可執行文件才能用gdb進行調試。
[root@localhost gdb]# gdb test
GNU gdb Red Hat Linux (6.3.0.0-1.21rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as “i386-redhat-linux-gnu”。..Using host libthread_db library “/lib/libthread_db.so.1”。
(gdb)
可以看出,在gdb的啟動畫面中指出了gdb的版本號、使用的庫文件等信息,接下來就進入了由“(gdb)”開頭的命令行界面了。
(1)查看文件。
在gdb中鍵入“l”(list)就可以查看所載入的文件,如下所示。
注意在gdb的命令中都可使用縮略形式的命令,如“l”代表“list”,“b”代表“breakpoint”,“p”代表“print”等,讀者也可使用“help”命令查看幫助信息。
(gdb) l
1 #include 《stdio.h》
2 int sum(int m);
3 int main()
4 {
5 int i,n = 0;
6 sum(50);
7 for(i = 1; i 《= 50; i++)
8 {
9 n += i;
10 }
(gdb) l
11 printf(“The sum of 1~50 is %d \n”, n );
12
13 }
14 int sum(int m)
15 {
16 int i, n = 0;
17 for(i = 1; i 《= m; i++)
18 {
19 n += i;
20 }
21 printf(“The sum of 1~m is = %d\n”, n);
20 }
可以看出,gdb列出的源代碼中明確地給出了對應的行號,這樣就可以大大地方便代碼的定位。
(2)設置斷點。
設置斷點是調試程序中一個非常重要的手段,它可以使程序運行到一定位置時暫停。因此,程序員在該位置處可以方便地查看變量的值、堆棧情況等,從而找出代碼的癥結所在。
在gdb中設置斷點非常簡單,只需在“b”后加入對應的行號即可(這是最常用的方式,另外還有其他方式設置斷點),如下所示:
(gdb) b 6
Breakpoint 1 at 0x804846d: file test.c, line 6.
要注意的是,在gdb中利用行號設置斷點是指代碼運行到對應行之前將其停止,如上例中,代碼運行到第6行之前暫停(并沒有運行第6行)。
(3)查看斷點情況。
在設置完斷點之后,用戶可以鍵入“info b”來查看設置斷點情況,在gdb中可以設置多個斷點。
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x0804846d in main at test.c:6
用戶在斷點鍵入“backrace”(只輸入“bt”即可)可以查到調用函數(堆棧)的情況,這個功能在程序調試之中使用非常廣泛,經常用于排除錯誤或者監視調用堆棧的情況。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 串口/網絡數據調試器 1次下載
- 基于OpenOCD和GDB的簡單且廉價的步進調試器
- STM8-Debug 調試器使用
- Linux嵌入式 gdb VSCode圖形化調試教程
- Microchip調試器(MDB)用戶指南 19次下載
- 使用GDB調試程序的詳細資料概述 0次下載
- PICKIT2硬件調試器的使用教程資料說明
- Microchip公司調試器(MDB)的詳細中文資料概述
- 如何使用MPLAB ICD 3在線調試器的詳細中文資料免費下載
- Microchip 調試器(MDB) 用戶指南
- 使用在PICkit? 3線調試器 5次下載
- 調試器模塊(可按鍵調試) 11次下載
- GDB調試命令手冊 9次下載
- 基于CodeWarrior集成開發環境的調試器原理 65次下載
- gdb使用指南
- 做了個DAPLink調試器,最高支持1500V隔離!靜電多不了一點! 261次閱讀
- 使用VSCode調試嵌入式程序:如何切換gdb server 1130次閱讀
- jlink調試器的工作原理 2279次閱讀
- 調試器連接MCU不穩定怎么辦? 661次閱讀
- 簡述GDB調試器提供的基本功能 1090次閱讀
- 什么是GDB?GDB的基本功能和命令總結 2951次閱讀
- 針對嵌入式處理器的可配置LLDB底層調試器解析 582次閱讀
- 通過GDB non-stop mode調試MySQL 492次閱讀
- 什么是gdb的底層調試原理 716次閱讀
- MPLAB ICD 3調試故障糾正措施 1395次閱讀
- OpenHarmony系統如何使用gdb調試init 854次閱讀
- QEMU+GDB調試ARM程序 2660次閱讀
- Linux應用的GDB調試的原理及過程分析 3318次閱讀
- Python調試器,快速定位各種疑難雜癥 3030次閱讀
- 基于SOPC的M8051調試器設計及系統測試 2608次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7藍牙設備在嵌入式領域的廣泛應用
- 0.63 MB | 3次下載 | 免費
- 89天練會電子電路識圖
- 5.91 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多