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...