合并不同gdb下的相同要素_GDB调试学习
簡介
GDB是GCC的調試工具。其功能如下:
啟動程序,使程序按自定義形式運行;
使程序停止指定斷點位置;
程序停止后,檢查程序執行中的相應情況;
動態改變程序執行環境。
gdb調試
能進行GDB調試,一般在編譯過程中,需使用-g參數。如果不使用-g參數,則在gdb調試過程中,將不能得到程序的函數名、變量名等信息,而只能看見運行時內存地址。舉例如下:
啟動gdb調試的方法有以下三種:
常用的調試有以下幾種:
b // 停在程序的指定一行
b // 停在程序的某個函數處
b * // 停在編譯器生成的prolog代碼處。主要用于匯編調試
b * // 停在代碼的某個地址處
d // 刪除斷點
info b // 查看斷點
r:運行被調試的程序。如果之前沒有設過斷點,則執行完整個程序;如果設過斷點,則程序停在第一個斷點處。
c:繼續執行被調試程序,直到到下一個斷點,或程序整體結束。
b:設置斷點,包括以下幾種:
s:執行一行源程序的代碼,如果此行代碼中存在函數調用,則進入該函數。
n:執行一行源程序的代碼,此代碼中的函數調用執行完成。
si:類似于s命令,不同的是,si針對的是匯編指令,而s針對的是源代碼。
ni:類似于n命令,不同的是,ni針對的也是匯編指令,而n針對的是源代碼。
p/print:打印指定變量(臨時變量和全局變量)、字符串、表達式等值。
display …:設置程序中斷后想顯示的數據及其格式。如希望程序中斷后顯示即將被執行的下一條匯編指令,可使用如下命令:display /i
undisplay :取消先前的display設置,編號從1開始遞增。
i/info:顯示各類信息。
q:退出gdb調試環境。
help [命令名稱]:gdb幫助命令,提供對GDB各種命令的解釋說明。如果指定了“命令名稱”參數,則顯示該命令的詳細說明;若果沒有指定參數,則分類顯示所有GDB命令,共用戶進一步瀏覽和查詢。
cd dir:運行GDB,使用dir作為gdb的工作目錄。
se File:從File讀取符號表并把它作為可執行文件。
-write:開通enable往可執行文件和核心文件寫的權限。
clear:刪除一個斷點,這個命令需指定代行或者函數名。
set:設置變量的值。如set val = 2即為把2保存到val變量中;設置輸入參數使用set args a b c(a,b,c分別為對應輸入參數)。
watch:監視一個變量的值,不管它何時被改變。
rwatch:指定一個變量,如果這個變量被讀,則暫停程序運行,在調試器中顯示信息,并等待下一個命令調試。
Ctrl + c:在當前位置停止執行正在執行的程序,斷點在當前行。
ptype:顯示變量的類型
return:強制從當前函數返回。
whatis:顯示變量的值和類型。
xbreak:在當前函數的退出的點上設置一個斷點。
load:動態加載一個可執行文件到調試器。
ignore:忽略某個斷點指定的次數。
finish:繼續執行,直到當前函數返回。
disable:禁止斷點功能,這個命令需要禁止的斷點在斷點列表索引值作為參數。
bt:顯示程序堆棧信息。
l:l相當于list,從第一行開始列出源碼。
gdb filename // 其中filename為可執行文件名
gdb filename core // core是程序core dump產生的文件,產生core文件,需設置棧大小無線使用ulimit -c unlimited
gdb filename PID // PID一般是服務程序運行時的進程ID
gcc test.c -o test -g
g++ test.cpp -o test -g
這個是學校的電腦測試的,實在太餓了.我沒有寫完就截圖一張.
總結
以上是生活随笔為你收集整理的合并不同gdb下的相同要素_GDB调试学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux关机命令(linux 关机 命
- 下一篇: endnote文献顺序编号不对_把End