c語言學習筆記五

2021-09-01 10:45:47 字數 1987 閱讀 3708

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基本用法如...