1. 編譯
2.進入gdb
不同的annotate 的值不代表不同的模式:
無論上面的那種情況,都出現了乙個現象:程式的輸出不能顯示,只有在程式退出的時候才顯示出來。
gdb-many-windows 切換單窗格/多窗格模式
gdb-restore-windows 恢復窗格布局
3. 除錯
常用的除錯命令,可以簡寫
命令意義用法
list
從第一行開始列出原始碼(預設10行)
l l 3 (開始行)
break
設定斷點。兩可以使用「行號」「函式名稱」「執行位址」等方式指定斷點位置。
其中在函式名稱前面加「*」符號表示將斷點設定在「由編譯器生成的prolog**處」。如果不了解彙編,可以不予理會此用法。
b 《行號》
b 《函式名稱》
b *《函式名稱》
b *《**位址》
run開始除錯程式
rcontinue
繼續執行被除錯程式,直至下乙個斷點或程式結束。
cclear
刪除特定行的斷點
clear 《行號》
delete
刪除斷點,編號從1開始
d 《編號》
next line
執行一行源程式**,此行**中的函式呼叫也一併執行。
nstep line
執行一行源程式**,如果此行**中有函式呼叫,則進入該函式
suntil
結束當前迴圈
until
可以檢查各個變數的值,陣列的值,以及函式等
print p (p為變數名)
print $1 ($1為歷史記錄變數,在以後可以直接引用 $1 的值)
顯示陣列: p 《陣列名》
顯示陣列元素:p
顯示陣列int a[n]的特定值:
① p *a@10
② p (int [10])*10
whatis
可以顯示某個變數的型別
whatis p
info
用於顯示各類資訊
如:info b 顯示斷點資訊
info r 暫存器資訊
info local 顯示當前函式中的區域性變數資訊
info prog 顯示被除錯程式的執行狀態
quit
退出gdb除錯
q本文參考,特此宣告:
Emacs中學習gdb除錯
1.編譯 2.進入gdb 不同的annotate 的值不代表不同的模式 無論上面的那種情況,都出現了乙個現象 程式的輸出不能顯示,只有在程式退出的時候才顯示出來。gdb many windows 切換單窗格 多窗格模式 gdb restore windows 恢復窗格布局 3.除錯 常用的除錯命令,...
gdb除錯學習
一般來說,gdb主要幫忙你完成下面四個方面的功能 1 啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2 可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3 當程式被停住時,可以檢查此時你的程式中所發生的事。4 動態的改變你程式的執行環境。除錯的程式如下 root lo...
gdb除錯學習
gdb是乙個由gnu開源組織發布的,unix linux作業系統下的,基於命令列,功能強大的程式除錯工具。可以用來除錯c,c 程式。在今天驗收實驗時發生特別尷尬的事情,由於在編譯.c檔案的時候沒有加 g選項,所以一直無法用gdb除錯程式,所以在總結gdb之前先來看看gcc在編譯時的引數。a.常規選項...