gdb除錯工具
sudo su 切換到root使用者
mkdir 新建程式檔案目錄tc
cat >test.c //新建檔案
直接編寫程式
示例**如下:
#include
int add_range(int low,int high)
}int main(void)
編譯gcc -g -o test test.c
使用gdb進行原始碼級除錯:
gdb test
檢視命令類別:help
檢視某一類加有哪些命令:help files
退出gdb除錯quit
backtrace (或bt) 檢視各級函式呼叫及引數
finish 連續執行到當前函式返回為止,然後停下來等待命令
frame (或f)幀編 選擇棧幀號
info (或i) locals 檢視當前棧幀區域性變數的值
list (或l) 列出源**,接著上次的位置往下列,每次列10行
list 行號 列出從第幾行開始的源**
list 函式名 列出某個函式的源**
next (或n) 執行下一行語句列印表示式的值,通過表示式可以修改變數
的值或者呼叫函
print (或p) 數
quit (或q) 退出gdb除錯環境
set var 修改變數的值
start 開始執行程式,停在main函式第一行語句前面等待命令
step (或s) 執行下一行語句,如果有函式呼叫則進入到函式中
斷點示例程式
#include
int main(void)
printf("input=%d\n",sum);
}return 0;
}編譯程式:gcc -g -o test2 test2.c
執行程式:./test2
ctrl+c退出執行
開始gdb除錯:start
每次停下來時顯示sum的值:display sum
繼續執行:next
取消跟蹤顯示:undisplay 1(標號)
在第九行設斷點: breakpoint 9
單步執行:continue
刪除斷點:delete breakpoints 3(標號)
設定斷點僅在sum不等於0的時候中斷:break 9 if sum!=0
基本命令:
break (或b)行號 在某一行設定斷點
break 函式名 在某個函式開頭設定斷點
break ... if ... 設定條件斷點
continue (或c) 從當前位置開始連續執行程式
delete breakpoints 斷點號 刪除斷點
display 變數名 跟蹤檢視某個變數,每次停下來都顯示
disable breakpoints 斷點號禁用斷點
enable 斷點號 啟用斷點
info (或i) breakpoints 檢視當前設定了哪些斷點
run (或r) 從頭開始連續執行程式
undisplay 跟蹤顯示號 取消跟蹤顯示
觀察點示例程式:
#include
int main(void)
printf("input=%d\n",sum);
}return 0;
}開始除錯:start
p input
列印指定單元的內容:x/7b(列印格式,b表示每個位元組一組)
設定觀察點: watch input[5]
基本命令;
watch 設定觀察點
info (或i) 檢視當前設定了哪些觀察點
watchpoints 從某個位置開始列印儲存單元的內容,全部當成位元組來看,而
x 不區分哪個位元組屬於哪個變數
段錯誤示例**:
#include
int main(void)
gdb test3
gdb r
bdb bt
五 c語言學習
整型 int 整數,絕大數機器上佔4個位元組,tc環境中是2個位元組。單精度實型float 單精度浮點數,一般4個位元組。雙精度實型double 8個位元組。長整型long long int 4個位元組。短整型short short int 2個位元組。無符號整型unsigned int 2個位元組...
C語言學習筆記(重溫要點五)
五 輸入輸出函式 1.輸入scanf 1 scanf函式雙引號中不能出現 n否則需要多輸入一次資料,且此資料無用。2 符號不能省略。注意變數列表中,應該是變數的位址。變數的位址通過求位址符 得到。所以在寫 時千萬要記住 符號。3 如果格式字串中有非空白字元,也就是除了格式控制字元和空白字元之外的字元...
Go語言學習筆記 五
這是go語言學習筆記的第五篇 條件語句格式 if condition else 幾點注意的地方 func example x int int else 選擇語句格式 switch iswitch幾點注意的地方 go語言中迴圈語句只支援for關鍵字,不支援while和do while。for基本用法如...