gdb源碼下載:ftp://sourceware.org/pub/gdb/releases/
1.下面爲8.3的編譯
進入gdb8.3目錄下:
第一步:編譯配置(若已經編譯過一次,若要編譯其他平臺,請重新解壓編譯;因爲編譯過之後參數已經被修改,編譯其他平臺會報錯)
1.編譯在本機上運行gdb,處理的目標平臺爲arm-linux的gdb版本,生成的執行文件前綴爲arm-linux-,安裝目錄爲/usr/local/arm-gdb
./configure --target=arm-linux --program-prefix=arm-linux- --prefix=/usr/local/arm-gdb
編譯選項說明:
--target=arm-linux意思是說目標平臺是運行於ARM體系結構的linux內核;
--program-prefix=arm-linux-是指生成的可執行文件的前綴,比如arm-linux-gdb;
--prefix是指生成的可執行文件安裝在哪個目錄,這個目錄需要根據實際情況作選擇。如果該目錄不存在,會自動創建,當然,權限足夠的話。
--build=編譯該軟件所使用的平臺
--host=該軟件將運行的平臺
--target=該軟件所處理的目標平臺
2.編譯在arm-linux平臺上運行的gdb,處理的目標平臺爲arm-linux的gdb版本,生成的執行文件前綴爲arm-linux-,安裝目錄爲/usr/local/arm-gdb
./configure --host=arm-linux --target=arm-linux --program-prefix=arm-linux- --prefix=/usr/local/arm-gdb
3.編譯在本機上運行的gdb,處理的目標平臺爲本機的gdb版本,安裝目錄爲/usr/local/gdb
./configure --host= --target= --program-prefix= --prefix=/usr/local/gdb
第二步:編譯
make
第三部:安裝
make install
2.gdbserver編譯:
進入gdb8.3/gdb/gdbserver目錄下:
第一步:編譯
生成在arm-linux平臺運行,執行arm-linux目標的gdbserver,安裝路徑爲/user/local/gdbserver
./configure --host=arm-linux --target=arm-linux --prefix=/user/local/gdbserver
第二步:編譯
make
第三步:安裝
make install
3.使用方法:
3.1、在編譯要進行調試的應用程序 加上 -g
測試程序如下(test_debug.c)
#include <stdio.h>
void C(int *p)
{
*p = 0x12;
}
void B(int *p)
{
C(p);
}
void A(int *p)
{
B(p);
}
void A2(int *p)
{
C(p);
}
int main(int argc, char **argv)
{
int a;
int *p = NULL;
A2(&a); // A2 > C
printf("a = 0x%x\n", a);
A(p); // A > B > C
return 0;
}
編譯:
arm-linux-gcc -g -o test_debug test_debug.c
3.2、在目標機上(如開發板設備):
./gdbserver 192.168.1.10:1234 ./test_debug
打印出如下信息:
Process ./test_debug created; pid = 751
Listening on port 1234
註釋:192.168.1.10:本開發板的ip
1234:端口號,自己隨便寫的
./test_debug:要調試的程序
3.3、在PC上輸入:
./arm-linux-gdb ./test-debug
target remote 192.168.1.10:1234
3.4、正式調試!介紹幾個常用的命令
(1)l:列出所有源代碼
(2)break main:在main處打斷點
break test_debug.c:11:在test_debug.c的11行打斷點
(3)c:運行到斷點處
(4)step:單步執行
(5)next:單步執行,但是step會進入函數裏面,但是next不會
(6)print a:打印a這個變量的值
(7)quit:退出,輸入此命令則開發板上的gdbserver也退出
(8) 詳細的GDB調試命令