GDB除錯程式 一

2021-10-06 17:32:47 字數 1681 閱讀 1211

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具,主要完成以下四個方面的內容:

1.啟動程式,讓陳程式按照自己的定義隨心所欲的執行。

2.可以放程式在指定的斷點處停住。

3.當程式挺住時,可以檢查程式發生的事情。

4.動態改變程式的執行環境。

gdb使用流程:

1. 編譯可執行檔案:~$: gcc -g  zju.c -o zju   這裡注意: -g表示程式可以被偵錯程式呼叫。

2.啟動gdb,~$: gdb

program也就是你的執行檔案,一般在當前目錄下。

~$: gdb core

用gdb同時除錯乙個執行程式和core檔案,core是程式非法執行後core dump後產生的檔案

~$: gdb / 先用gdb 關聯上源**,再在gdb中用attach命令來掛接

程序的pid。並用detach來取消掛接程序。

如果你的程式是乙個服務程式,那麼你可以指定這個服務程式執行時的程序id。gdb會自動

attach上去,並除錯他。program應該在path環境白能量中搜素到。

gdb幾種暫停方式:

一、設定斷點(breakpoint)

break 在進入指定函式時停住

break 在指定的行號停住

break : linenum  在原始檔filename 的指定行號暫停

break : func   在原始檔的進入函式func 時暫停

break ...... if 在上述指定的引數處 滿足條件condition條件暫停,比如,break if i=100,表示

當i等於100的時候程式暫停。

二、設定觀察點(watchpoint)      

觀察點一般來觀察某個表示式(變數也是一種表示式)的值是否有變化了,如果有變化,馬上停住程式。我們有下面的幾種方法來設定觀察點:      

watch 為表示式(變數)expr設定乙個觀察點。一量表示式值有變化時,馬上停住程式。        

rwatch 當表示式(變數)expr被讀時,停住程式。      

awatch 當表示式(變數)的值被讀或被寫時,停住程式。        

info watchpoints        列出當前所設定了的所有觀察點。

三、設定捕捉點(catchpoint)

你可設定捕捉點來補捉程式執行時的一些事件。如:載入共享庫(動態鏈結庫)或是c++的異常。設定捕捉點的格式為: catch 當event發生時,停住程式。event可以是下面的內容:      

1、throw 乙個c++丟擲的異常。(throw為關鍵字)      

2、catch 乙個c++捕捉到的異常。(catch為關鍵字)        

3、exec 呼叫系統呼叫exec時。(exec為關鍵字,目前此功能只在hp-ux下有用)        

4、fork 呼叫系統呼叫fork時。(fork為關鍵字,目前此功能只在hp-ux下有用)        

5、vfork 呼叫系統呼叫vfork時。(vfork為關鍵字,目前此功能只在hp-ux下有用)        

6、load 或 load 載入共享庫(動態鏈結庫)時。(load為關鍵字,目前此功能只在hp-ux下有用)        

7、unload 或 unload 解除安裝共享庫(動態鏈結庫)時。

gdb程式恢復執行的命令: c/continue

GDB除錯程式 一

以下文章 陳皓csdn部落格 用gdb除錯程式 gdb概述 gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖 形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功 能...

GDB除錯程式

gdb的三個功能 1 啟動被除錯的程式 2 設定斷點 3 設定斷點之後可以檢查程式的狀態 1.編譯生成可執行檔案 注意 g 除錯選項 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設定斷點 break main 4.執行程式 run5.利用 更加豐富的 gd...

gdb除錯程式

除錯是每個程式設計師都會面臨的問題.如何提高程式設計師的除錯效率,更好更快地定位程式中的問題從而加快程式開發的進度,是大家共同面對的問題.可能windows使用者順口就會說出 用vc唄 它提供了設定斷點,單步跟蹤等的圖形介面,使除錯起來直觀易用.但linux使用者可能要生悶氣了 o 難道我們linu...