在linux平台下,使用最多的就是除錯工具gdb.通過命令gcc -g test.c 。缺省會生成a.out檔案,這個檔案由於引數-g的原因加入了除錯資訊。所以可以使用gdb來載入並除錯,但是在使用斷點的時候,你會很鬱悶。真的。比如下面先來看這個過程。
/******
test.c **
********/
1 #include
2 3 void docout()
4 7 int main(void)
8執行命令 gcc -g test.c 輸出:
[root@yongxin ~]# gcc -g test.c
[root@yongxin ~]# ls
anaconda-ks.cfg download nautilus-debug-log.txt test.c
a.out firefox_wall*****.png pictures videos
crossplatform install.log projects
desktop install.log.syslog public
documents music templates
再執行gdb a.out 設定斷點資訊 breakpoint
23 void docout()
4
7 int main(void)
8 {
910 int b;
11 printf("%p\n",&b);
(gdb) break 10
breakpoint 1 at 0x80483da: file test.c, line 10.
(gdb) break 12
breakpoint 2 at 0x80483ed: file test.c, line 12.
(gdb) infobreak
undefined command: "infobreak". try "help".
(gdb) info break
num type disp enb address what
1 breakpoint keep y 0x080483da in main at test.c:10
2 breakpoint keep y 0x080483ed in main at test.c:12
可以執行,沒問題。但是這些斷點資訊是沒有辦法保持的。下次進來的時候,必須重新設定斷點。當你要頻繁退出的時候,就會非常煩。特別是斷點特別多的情況。氣死你。
所以解決辦法就是將打斷點的命令(breakpoint 行號)寫到乙個檔案裡面去 ,在初始化的時候自動載入。
比如檔案break.list
breakpoint 10
breakpoint 12
然後通過命令 gdb a.out -x break.list -tui 載入這個程式
然後 info break 你就可以看到所有載入的斷點了。
完畢。
ROS使用gdb除錯斷點
我目前沒有使用roslaunch 通過修改 launch prefix xterm e gdb ex run args 獲得成功。我使用gdb去啟動orb slam節點。在 catkin ws devel lib orb slam下,終端開啟輸入 gdb orb slam雖然我會提示 reading...
gdb工具使用
gdb是乙個由gnu開源組織發布的 unix linux作業系統下的 基於命令列的 功能強大的程式除錯工具。對於一名linux下工作的c 程式設計師,gdb是必不可少的工具。以下程式為例 include include int add sum int a,int b int main int arg...
gdb工具的使用
gdb是乙個互動式的除錯工具,在linux系統中可以很好地幫助我們完成程式的除錯。它的主要功能有 1.設定斷點,讓程式直接執行至可能出錯的地方 2.檢視變數的值,在除錯過程中隨時檢視我們關注的變數的值。3.修改變數的值,這是vs的偵錯程式所不具有的功能,可以幫助我們更快的定位程式的問題所在。那麼gd...