1. 程式人生 > >GDB 常用除錯命令

GDB 常用除錯命令

呼叫gdb編譯需要在cc後面加 -g引數再加-o;

[[email protected] home]#gdb 除錯檔案:啟動gdb

(gdb) l :(字母l)從第一行開始列出原始碼

(gdb) break n :在第n行處設定斷點

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

(gdb) info break: 檢視斷點資訊

(gdb) r:執行程式

(gdb) n:單步執行

(gdb) c:繼續執行

(gdb) p 變數 :列印變數的值

(gdb) bt:檢視函式堆疊

(gdb) finish:退出函式

(gdb) shell 命令列:執行shell命令列

(gdb) set args 引數:指定執行時的引數

(gdb) show args:檢視設定好的引數

(gdb) show paths:檢視程式執行路徑;

           set environment varname [=value] 設定環境變數。如:set env USER=hchen;

            show environment [varname] 檢視環境變數;

(gdb) cd 相當於shell的cd;

(gdb)pwd :顯示當前所在目錄

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

(gdb)clear 行號n:清除第n行的斷點

(gdb)delete 斷點號n:刪除第n個斷點

(gdb)disable 斷點號n:暫停第n個斷點

(gdb)enable 斷點號n:開啟第n個斷點

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

list :簡記為 l ,其作用就是列出程式的原始碼,預設每次顯示10行。 
list 行號:將顯示當前檔案以“行號”為中心的前後10行程式碼,如:list 12 
list 函式名:將顯示“函式名”所在函式的原始碼,如:list main 
list :不帶引數,將接著上一次 list 命令的,輸出下邊的內容。 
注意 :如果執行list 命令得到類似如下的列印,那是因為在編譯程式時沒有加入 -g 選項:
(gdb) list
1       ../sysdeps/i386/elf/start.S: No such file or directory.
        in ../sysdeps/i386/elf/start.S
 

run:簡記為 r ,其作用是執行程式,當遇到斷點後,程式會在斷點處停止執行,等待使用者輸入下一步的命令。 
回車:重複上一條命令。 
set args:設定執行程式時的命令列引數,如:set args 33 55 
show args:顯示命令列引數 
continue:簡訊為 c ,其作用是繼續執行被斷點中斷的程式。 
break:為程式設定斷點。 
break 行號:在當前檔案的“行號”處設定斷點,如:break  33 
break 函式名:在使用者定義的函式“函式名”處設定斷點,如:break cb_button 
info breakpoints:顯示當前程式的斷點設定情況 
disable breakpoints Num:關閉斷點“Num”,使其無效,其中“Num”為 info breakpoints 中顯示的對應值 
enable breakpoints Num:開啟斷點“Num”,使其重新生效 
step:簡記為 s ,單步跟蹤程式,當遇到函式呼叫時,則進入此函式體(一般只進入使用者自定義函式)。 
next:簡記為 n,單步跟蹤程式,當遇到函式呼叫時,也不進入此函式體;此命令同 step 的主要區別是,step 遇到使用者自定義的函式,將步進到函式中去執行,而 next 則直接呼叫函式,不會進入到函式體內。 
until:當你厭倦了在一個迴圈體內單步跟蹤時,這個命令可以執行程式直到退出迴圈體。 
finish: 執行程式,直到當前函式完成返回,並列印函式返回時的堆疊地址和返回值及引數值等資訊。 
stepi或nexti:單步跟蹤一些機器指令。

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() 函式 
bt:顯示當前程式的函式呼叫堆疊。 
display 表示式:在單步執行時將非常有用,使用display命令設定一個表示式後,它將在每次單步進行指令後,緊接著輸出被設定的表示式及值。如: display a 
watch 表示式:設定一個監視點,一旦被監視的“表示式”的值改變,gdb將強行終止正在被除錯的程式。如: watch a 
kill:將強行終止當前正在除錯的程式 
help 命令:help 命令將顯示“命令”的常用幫助資訊 
call 函式(引數):呼叫“函式”,並傳遞“引數”,如:call  gdb_test(55) 
layout:用於分割視窗,可以一邊檢視程式碼,一邊測試: 
layout src:顯示原始碼視窗 
layout asm:顯示反彙編視窗 
layout regs:顯示原始碼/反彙編和CPU暫存器視窗 
layout split:顯示原始碼和反彙編視窗 
Ctrl + L:重新整理視窗 
quit:簡記為 q ,退出gdb 
當然,gdb的功能遠不止這些,包括多程序/多執行緒/訊號/遠端除錯等功能在這裡均沒有提及,有需要的讀者可以參考其它資訊。

相關推薦

GDB常用除錯命令(二)

GDB訊號處理       在GDB中使用handle命令定義一個訊號處理。訊號可以以SIG開頭或不以 SIG開頭,可以用定義一個要處理訊號的範圍(如:SIGIO-SIGKILL,表示處理從SIGIO訊號到SIGKILL的訊號,其中包括SIGIO, SIGIOT,S

【轉】gcc/g++常用編譯選項和gdb常用除錯命令

  gcc/g++編譯器是我們寫編譯C/C++程式時離不開的編譯工具,而gdb又是除錯C/C++程式的利器,這一篇文章我們記錄一下它們的慣常用法。 gcc/g++常用編譯選項 選項 作

gdb常用除錯命令以及多執行緒堆疊的檢視

GDB是GNU開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像VC、BCB等IDE的除錯,但如果你是在UNIX平臺下做軟體,你會發現GDB這個除錯工具有比VC

gdb常用除錯命令

注:以下內容中,圓括號表示別名,方括號表示可選引數,尖括號表示必須引數。 gdb [檔名]:進入除錯 file <檔名>:載入程式 l(list) [行號或函式名]:列出程式碼 r(run):執行程式/重新執行程式 c(continue):繼續執行 n(ne

GDB 常用除錯命令

呼叫gdb編譯需要在cc後面加 -g引數再加-o; [[email protected] home]#gdb 除錯檔案:啟動gdb (gdb) l :(字母l)從第一行開始列出原始碼 (gdb) break n :在第n行處設定斷點 (gdb) brea

GDB常用除錯方式

使用gdb除錯之前,首先要利用gcc/g++生成可利用GDB除錯的檔案,然後在進行除錯。1.gcc/g++ 除錯    常採用的方式為gcc /g++  -g  -Wall  xx.c/cpp  -o  xx其中gcc/g++根據不同的編譯檔案選擇編譯工具,-g表示編譯器在編

Mtk WIFI常用除錯命令

原文:http://blog.csdn.net/gamelife_lch/article/details/21520075 在手機開發之初,我們很多時候要在lcm和tp還沒有正常工作的時候就需要同步的進行wifi模組功能的開發,所以瞭解常用的命令會有助於我們快速的開發我們的手機,以下就是列出的常用命令供大

xcode gdb/lldb除錯命令

* thread #1: tid = 0x1f03, 0x0132edee CoreFoundation`___forwarding___ + 206, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0×0) frame #0: 0x

gdb 跟蹤除錯命令整理

可以使用qemu軟體在PC上模擬執行 1)安裝qemu sudo apt-get install (聯網) qemu tar.gz (安裝包) cd ~/esd1503 cp /mnt/hgfs/esd1503/arm/env/qemu tar.gz/ tar xf qemu.tar.gz cd qemu/

lldb(gdb)常用除錯命令

1> po:列印物件,會呼叫物件 description 方法。是 print-object 的簡寫 2> expr:可以在除錯時動態執行指定表示式,並將結果打印出來,很有用的命令 3> print:也是列印命令,需要指定型別
 4&

GDB常用除錯命令及方法總結

1. 執行GDB啟動 GDB 的方法有以下幾種:gdb <program>:program 是使用者的執行檔案,一般在當然目錄下。    例如:gdb bmu_run gdb

GDB 除錯幾個常用命令

gdb -c core.14103                           -- 檢視那個程式產生的core檔案 gdb 程式名 core core.14103            

Linux除錯工具strace和gdb常用命令小結-轉

最近在Linux環境下做C語言專案,由於是在一個原有專案基礎之上進行二次開發,而且專案工程龐大複雜,出現了不少問題,其中遇到最多、花費時間最長的問題就是著名的“段錯誤”(Segmentation Fault)。藉此機會系統學習了一下,這裡對Linux環境下的段錯誤做個小結,方便以後同類問題的排查與解決。 1

Linux中常用的操作命令和vi操作命令以及gdb除錯命令

Linux簡介及Ubuntu安裝常見指令系統管理命令打包壓縮相關命令關機/重啟機器Linux管道Linux軟體包管理vim使用使用者及使用者組管理檔案許可權管理Linux簡介及Ubuntu安裝Linux,免費開源,多使用者多工系統。基於Linux有多個版本的衍生。RedHat

GDB常用調試命令以及多進程多線程調試

star 調用 次循環 rgs 靈活 機器碼 cor trac 讓我 轉載自:http://blog.csdn.net/freeelinux/article/details/53700266 一:普通命令 1.list命令 list linenum 顯示程序第

GDB常用命令簡介

進入 常用 機器 fse 參數 代碼 next 匯編 不同 1、啟動調試程序   gdb 調試對象,例如gdb app 2、運行程序   run 或這簡寫為r 3、設置斷點   有幾種不同的方式   1)break line   2) break file:line

GDB常用命令使用

sig end 機制 機器 方式 行程 nbsp 運行時 step GDB(GNU Debugger)是在Unix以及類Unix系統下的調試工具。功能極其強大,幾乎涵蓋了你所需要的全部功能。 GDB主要幫忙你完成下面四個方面的功能: 1.啟動你的程序,可以按照你的定制要求隨

GDB常用命令

產生 add list 調試 align 想要 table 設置斷點 height 命 令 描 述 file 裝入想要調試的可執行文件. kill 終止正在調試的程序. list 列出產生執行文件的源代碼的一部分

GDB常用命令與Visual Studio對比

兩種偵錯程式的字檢查功能一覽表 命令名稱 GDB Visual Studio 執行程式 runs [args] F5:Start Debugging (開始除錯)

GDB除錯命令(轉載)

1.啟動除錯 前置條件:編譯生成執行碼時帶上 -g,如果使用Makefile,通過給CFLAGS指定-g選項,否則除錯時沒有符號資訊。 gdb program //最常用的用gdb啟動程式,開始除錯的方式 gdb program core //用gdb檢視core du