1,除錯core dump 檔案
ulimit -c 1024:設定coredump檔案大小為1024,否則預設不會生成coredump檔案
gdb -c core:gdb除錯該coredump檔案
file a.out:指定符號表檔案
bt:列印堆疊資訊
2,插入斷點:
b/break 15
b funcname
b filename::linenum
b 預設在下一條指令停止
b if a=100
3,退出gdb
qquit
4,執行shell命令
shell clear
5,停止執行程式/恢復執行
斷點(breakpoint),觀察點(watchpoint),捕捉點(catchpoint),訊號(signal),執行緒停止(thread stops)
c/continue恢復執行
6,設定觀察點
watch
rwatch 當expr被讀時停止程式
awatch 當expr被讀或寫時停止程式
7,維護停止點
clear 清除所有停止點,只有在程式執行時才起作用
clear
clear
d/delete [breakpoints][range...] 刪除指定的斷點,breakpoints表示斷點號,range表示斷點號的範圍,如3-7
dis/disable [breakpoints][range...] 禁用指定的斷點
8,單步執行
c/fg/continue 恢復程式執行直到下乙個斷點
step 單步count次,如果有函式呼叫,進入該函式內部執行
next 單步count次,如果有函式呼叫,不會進入該函式
finish 執行程式直到當前函式完成返回
u/until 執行程式直到完成當前迴圈體並返回
9,檢視棧資訊
bt/backtrace 列印當前函式呼叫棧的所有資訊
bt 列印棧頂上n層資訊
bt <-n> 列印棧低下n層資訊
f/frame 一般來說,程式停止時,當前棧就是最頂層棧,f/frame 0表示列印0層,即棧頂資訊,n表示列印第n層棧資訊,列印資訊比bt豐富
up 向棧的上面移動n層,如果沒有n,則表示移動一層
down 向棧的下面移動n層,如果沒有n,則表示移動一層
info f/frame,列印更為詳細的資訊
info args 列印當前函式的引數名及值
info locals 列印當前函式中所有區域性變數的值
info catch 列印當前函式中異常處理資訊
10,檢視源**
list 顯示程式第linenum行的周圍的源程式
list 顯示函式名為function的函式的源程式
list 顯示當前行後面的源程式
list - 顯示當前行前面的源程式
一般是列印當前行的上5行和下5行,如果顯示函式是是上2行下8行,預設是10行,當然,你也可以定製顯示的範圍,使用下面命令可以設定一次顯示源程式的行數
set listsize 設定一次顯示源**的行數
show listsize 檢視當前listsize的設定
list命令還有下面的用法:
list , 顯示從first行到last行之間的源**
list , 顯示從當前行到last行之間的源**
list + 往後顯示源**
一般來說在list後面可以跟以下這們的引數:
行號<+offset> 當前行號的正偏移量
<-offset> 當前行號的負偏移量
哪個檔案的哪一行
函式名哪個檔案中的哪個函式
<*address> 程式執行時的語句在記憶體中的位址
11,搜尋源**
forward-search
search 向前面搜尋
reverse-search 全部搜尋
12,源**在記憶體中的位置
info line
info line
13,檢視源**的機器碼
disassemble function
14,檢視執行時資料
p/print
p /是輸出的格式,如果設定十六進製制輸出的話,就是/x
x 按十六進製制格式顯示變數。
d 按十進位制格式顯示變數。
u 按十六進製制格式顯示無符號整型。
o 按八進位制格式顯示變數。
t 按二進位制格式顯示變數。
a 按十六進製制格式顯示變數。
c 按字元格式顯示變數。
f 按浮點數格式顯示變數。
15,列印陣列
int *array = (int *) malloc (len * sizeof (int));
p *array@len @左邊是陣列位址,右邊是陣列長度
16,自動顯示,即程式停止或單步跟蹤時,變數自動顯示
display
display /
display /
info display 列印設定的自動顯示的變數資訊
17,檢視暫存器的值
info registers
info all-registers
info registers
需要注意的是,如果你的程式編譯時開啟了優化選項,那麼在用gdb除錯被優化過的程式時,可能會發生某些變數不能訪問,或是取值錯誤碼的情況。這個是很正常的,因為優化程式會刪改你的程式,整理你程式的語句順序,剔除一些無意義的變數等,所以在gdb除錯這種程式時,執行時的指令和你所編寫指令就有不一樣,也就會出現你所想象不到的結果。對付這種情況時,需要在編譯程式時關閉編譯優化。一般來說,幾乎所有的編譯器都支援編譯優化的開關,例如,gnu的c/c++編譯器gcc,你可以使用「-gstabs」選項來解決這個問題。
gdb常用功能
gdb作為強大的unix下程式除錯工具,也是乙個軟體,平時我常用的功能點如下 1 業務程序異常如掛住時,使用gdb的如下命令定位 gdb p pid info threads,檢視當前程序內所有執行緒執行最後停留的函式 2 業務程序coredump時,使用gdb定位崩潰點 info threads ...
SAP常用功能
1 sap外觀 幫助圖示右側的按鈕是customizing of local layout 定製本地布局 按鈕,可以用它來變更sap gui顯示介面的風格。2 sap導航 1 在sap print list視窗裡,如果不想在保持期內儲存系統假離線請求,在print screen list 列印頁面列...
IOS 常用功能
對xib檔案的處理 xib的載入可以通過 nsbundle maibundle loadnibnamed nsstring str owner nsstring temp dic nsdictionary dic 載入 xib的fileowner檔案。然後通過下標得到sub 如果要獲取xib中固定的...