release 發行版
debug 開發版本 可調試版本 添加了一些debug_*段
源代碼 ----》 可執行文件 默認的release
編譯鏈接 debug gcc -o debug main.c -g
編譯過程中加入debug信息:
gcc -o main.c -g
鏈接不會加入debug信息
gcc -o main main.o
調試的對象: 單步執行
main.c main.o debug(調試)
gdb debug 進入調試
l(list) 顯示源代碼(默認顯示main函數所在文件的源代碼)
list filename.num 顯示指定文件指定行附近的源代碼
斷點:
b(break) linenum 給指定行添加斷點
b functionname 給指定函數添加斷點
b filename:linenum 給指定文件指定添加斷點
b linenum if 條件 添加一個條件斷點
Info b 顯示斷點信息
d bpnum 刪除斷點
disable bpnum 將斷點設置爲無效
enable bpnum 將斷點設置爲有效
執行過程控制:
r (run) 啓動調試
n(next) 執行下一步
s 進入函數中執行
finish 退出函數執行
c(continue) 繼續運行 運行到下一個斷點中
q(quit) 退出調試
各種查看:
p(print) valname 查看變量的值
p &valname 查看便量的地址
p *ptr 查看指針指向的地址存儲的值
p arr 顯示數組所有元素
p *ptrarr@num(num表示元素個數) 通過指向數組的指針顯示所有元素
p struct_val 顯示結構體變量中所有成員的值
p struct_val.a 顯示結構體變量中某個成員的值
p ptr_struct->a 通過指針顯示結構體變量中某個成員的值
p functionname(a,b) 將函數測試運行
bt 顯示函數調用棧(函數調用流程)