gdb的基礎詳細用法

2021-08-08 23:33:14 字數 1769 閱讀 9764

run(簡寫r): 執行程式,當遇到斷點後,程式會在斷點處停止執行,等待使用者輸入下一步的命令。

continue(簡寫c):繼續執行,到下乙個斷點處(或執行結束)

next(簡寫n): 單步跟蹤程式,當遇到函式呼叫時,直接呼叫,不進入此函式體;

step(簡寫s):單步除錯如果有函式呼叫,則進入函式;與命令n不同,n是不進入呼叫的函式的

until:執行程式直到退出迴圈體; / until+行號: 執行至某行

finish: 執行程式,直到當前函式完成返回,並列印函式返回時的堆疊位址和返回值及引數值等資訊。

call 函式(引數):呼叫「函式」,並傳遞「引數」,如:call gdb_test(55)

quit:簡記為 q ,退出gdb

break n(簡寫b n):在第n行處設定斷點 ;可以帶上**路徑和**名稱: b oagupdate.cpp:578)

break func:在函式func()的入口處設定斷點,如:break cb_button

delete 斷點號n:刪除第n個斷點

disable斷點號n:暫停第n個斷點

enable 斷點號n:開啟第n個斷點

clear 行號n

:清除第n行的斷點

info breakpoints(簡寫info b) :顯示當前程式的斷點設定情況

tbreak 設定臨時斷點

b 行號 if 條件 表示加入條件斷點

list(簡寫l):列出程式的源**,預設每次顯示10行。

list 行號:將顯示當前檔案以「行號」為中心的前後10行**,如:list 12

list 函式名:將顯示「函式名」所在函式的源**,如:list main

list :不帶引數,將接著上一次 list 命令的,輸出下邊的內容。

print 表示式:簡記為 p ,其中「表示式」可以是任何當前正在被測試程式的有效表示式,比如當前正在除錯c語言的程式,那麼「表示式」可以是任何c語言的有效表示式,包括數字,變數甚至是函式呼叫。

print a:將顯示整數 a 的值

print ++a:將把 a 中的值加1,並顯示出來

print name:將顯示字串 name 的值

print gdb_test(22):將以整數22作為引數呼叫 gdb_test() 函式

print gdb_test(a):將以變數 a 作為引數呼叫 gdb_test() 函式

display 表示式:在單步執行時將非常有用,使用display命令設定乙個表示式後,它將在每次單步進行指令後,緊接著輸出被設定的表示式及值。如: display a

watch 表示式:設定乙個監視點,一旦被監視的「表示式」的值改變,gdb將強行終止正在被除錯的程式。如: watch a  配合c使用

where/bt :當前執行的堆疊列表

set args 引數:指定執行時的引數

show args:檢視設定好的引數

info program: 來檢視程式的是否在執行,程序號,被暫停的原因

layout:用於分割視窗,可以一邊檢視**,一邊測試:

layout src:顯示源**視窗

layout asm:顯示反彙編視窗

layout regs:顯示源**/反彙編和cpu暫存器視窗

layout split:顯示源**和反彙編視窗

ctrl + l:重新整理視窗

進入中斷 gcc -g test.c -o test

gdb test

檢視學習

GDB基礎用法

gdb gnu debugger 是gcc的除錯工具。其功能強大,現描述如下 gdb主要幫忙你完成下面四個方面的功能 1.啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2.可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3.當程式被停住時,可以檢查此時你的程式中所發生...

GDB 命令詳細

linux中包含有乙個很有用的除錯工具 gdb gnu debuger 它可以用來除錯c和c 程式,功能不亞於windows下的許多圖形介面的除錯工具。和所有常用的除錯工具一樣,gdb提供了以下功能 監視程式中變數的值 在程式中設定斷點 程式的單步執行 在使用gdb前,必須先載入可執行檔案,因為要進...

GDB的基本用法

本文參考 debug hacks 一書所作 每天進步一點點。一.準備 通過 gcc 的 g 選項生成除錯資訊。gcc wall o2 g 原始檔 g選項可以使用僅可gdb使用的一些附加除錯資訊 這些附加資訊可以使gdb工作的更好,但是也可能令其他偵錯程式崩潰或者不能讀該檔案。二.gdb基本用法 啟動...