Emacs中學習gdb除錯

2021-09-08 20:47:20 字數 1325 閱讀 9461

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

可以檢查各個變數的值,陣列的值,以及函式等

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.常規選項...