1. 程式人生 > >gcc和gdb除錯

gcc和gdb除錯

1.逐過程生成
預編譯:gcc -E main.c 生成main.c檔案
編譯:gcc -S main.i 生成 main.i檔案
彙編:gcc -c main.s 生成main.s檔案
連結:gcc main.o 生成a.out檔案
重新命名:gcc main.o -o main 生成main檔案
2.一步生成可執行檔案:gcc main.c -o main 生成main檔案
執行:./main
3.生成debug版本的可執行檔案
gcc -c main.c -g
gcc main.c -o debug -g
在編譯階段將-g新增進檔案中
4.除錯目標:debug版本的可執行檔案
gdb debug:進入gdb除錯介面
l/list 顯示原始碼
lift filename:num 顯示filename的前num行程式碼
b line 給指定的行新增斷點
b fun n給指定的函式的第n行新增斷點
info b顯示已新增的斷點
d bpnum 刪除指定的斷點
r/run 啟動除錯
n/next 逐過程
s 逐語句
p var 顯示變數值
finish 退出函式
c執行到下一個斷點
display 顯示變數
undisplay num 刪除第num個display
x檢視記憶體:x/nfu + 地址
n:顯示資料的個數 f:顯示資料的進位制數 u:每個數字代表n位元組資料
f:x十六進位制 d十進位制 o八進位制 t二進位制 c字元 f浮點數
u:b單位元組 h雙位元組 w四位元組 g八位元組
常用的 x/4xb + 地址
bt:函式呼叫堆疊
ptype:顯示資料型別