轉載:https://www.cnblogs.com/tangtangde12580/p/8045980.html
編譯程序時需要加上-g,之后才能用gdb進行調試:gcc -g main.c -o main
gdb中命令:
回車鍵:重復上一命令
(gdb)help:查看命令幫助,具體命令查詢在gdb中輸入help + 命令,簡寫h
(gdb)run:重新開始運行文件(run-text:加載文本文件,run-bin:加載二進制文件),簡寫r
(gdb)start:單步執行,運行程序,停在第一執行語句
(gdb)list:查看原代碼(list-n,從第n行開始查看代碼。list+ 函數名:查看具體函數),簡寫l
(gdb)set:設置變量的值
(gdb)next:單步調試(逐過程,函數直接執行),簡寫n
(gdb)step:單步調試(逐語句:跳入自定義函數內部執行),簡寫s
(gdb)backtrace:查看函數的調用的棧幀和層級關系,簡寫bt
(gdb)frame:切換函數的棧幀,簡寫f
(gdb)info:查看函數內部局部變量的數值,簡寫i
(gdb)finish:結束當前函數,返回到函數調用點
(gdb)continue:繼續運行,簡寫c
(gdb)print:打印值及地址,簡寫p
(gdb)quit:退出gdb,簡寫q
(gdb)break+num:在第num行設置斷點,簡寫b
(gdb)info breakpoints:查看當前設置的所有斷點
(gdb)delete breakpoints num:刪除第num個斷點,簡寫d
(gdb)display:追蹤查看具體變量值
(gdb)undisplay:取消追蹤觀察變量
(gdb)watch:被設置觀察點的變量發生修改時,打印顯示
(gdb)i watch:顯示觀察點
(gdb)enable breakpoints:啟用斷點
(gdb)disable breakpoints:禁用斷點
(gdb)x:查看內存x/20xw 顯示20個單元,16進制,4字節每單元
(gdb)run argv[1] argv[2]:調試時命令行傳參
(gdb)set follow-fork-mode child#Makefile項目管理:選擇跟蹤父子進程(fork())
core文件:先用$ ulimit -c 1024 開啟core,當程序出錯會自動生成core文件。調試時 gdb a.out core
ctrl+c:退出輸入