linux c之gdb常用斷點除錯總結
1 、安裝GDB
sudo apt-get install gdb
2 、怎麼打斷點
1 、原始檔的某一行設定斷點
break 行號
2、一個特定的函式設定斷點
break 函式名
3、設定條件斷點
break 行號 if 條件
3、舉例分析
hello2.c原始檔如下
#include<stdio.h>
int main() {
int a = 1, b = 2, c = 3;
int i;
printf("hello chenyu");
for (i = 0 ; i < 100; i++) {
++a;
if (i > 90) {
++b;
} else {
++c;
}
}
printf("a = %d, b = %d, c = %d", a, b, c);
int cc = 0;
for (cc; cc < 9; cc++) {
printf("c %d", i);
}
return 0;
}
比如我們在 ++b (第10行)這行和printf("c %d", i)(第18行)這兩行打斷點命名如下
1、編譯
gcc -g hello2.c
2、gdb除錯
gdb hello2
3、顯示程式碼行數命令如下
list
3次回車
4 、然後輸入下面打斷點命令
break 10
break 18
圖片如下:
5 、 執行並且跳轉到斷點
1、執行
start
2 、跳轉到斷點命令(countine 簡寫c)
c
程式就到到++b 這行來,上面2個步驟也可以用這個run (簡寫 r)命令程式碼
r
我們這裡程式碼會跳到這個斷點裡面來,我麼就避免了手動迴圈這麼多次,因為這個斷點會打很多次,所以我們可以用c命令,還是會在這行,所以打斷點一般不要打在迴圈裡面,當這個程式碼執行完之後,我們再用c命令,就會列印18行的程式碼
我們也可以用watch命令來觀察變數,如果變數的值發生變化,程式就會停止
watch b
我麼看變數的值或則單個變數的值可以用下面命令
i locals
p c
進入函式內部用下面命令
s
單步除錯往下執行用下面命令
n
刪除斷點
delete 行號
退出gdb命令
quit
4、如何儲存斷點
有時候執行時,上次打的斷點沒了,怎麼儲存呢?
1、檢視斷點資訊並儲存
info b
2 、儲存斷點
save breakpoint fig.dp
斷點儲存在fig.dp檔案裡面
3、除錯時候讀取儲存斷點檔案
gdb hello2 -x fig.dp
要記住加上引數 -x
然後再去檢視是否有斷點
info b
可以看到是有2個斷點的
5、總結
學會了gdb打斷點的基本命令,還有一些除錯手段,以及斷點的儲存。
相關文章
- GDB除錯彙總除錯
- linux下用gdb除錯c程式Linux除錯C程式
- C語言——gdb除錯C語言除錯
- linux 下GDB除錯Linux除錯
- C編譯: 使用gdb除錯編譯除錯
- C 編譯: 使用 gdb 除錯編譯除錯
- 【Java】Debug斷點除錯常用技巧Java斷點除錯
- C++除錯總結C++除錯
- Linux核心使用gdb除錯Linux除錯
- gdb除錯除錯
- Linux中使用GDB除錯程式Linux除錯
- linux下gdb單步除錯Linux除錯
- gdb除錯命令小結_與多檔案除錯_遠端除錯除錯
- Xcode之斷點除錯詳解XCode斷點除錯
- 軟體除錯斷點之小記除錯斷點
- 使用GDB命令列偵錯程式除錯C/C++程式命令列除錯C++
- GDB除錯MySQL除錯MySql
- gdb除錯命令除錯
- GDB除錯指令除錯
- c/c++ gdb 除錯帶引數的程式C++除錯
- Linux—gdb除錯簡單實現Linux除錯
- Linux技術——gdb除錯基礎Linux除錯
- (14)caffe總結之Linux下Caffe如何除錯Linux除錯
- webstorm 斷點除錯WebORM斷點除錯
- Lua中如何實現類似gdb的斷點除錯—07支援通過函式名稱新增斷點斷點除錯函式
- 使用gdb和gdbserver除錯Android C/C++程式Server除錯AndroidC++
- 由一條微博引發的 — Xcode LLDB 除錯斷點總結XCodeLLDB除錯斷點
- GDB 除錯程式碼除錯
- gdb除錯多程式除錯
- 用GDB除錯程式除錯
- GDB多程式除錯除錯
- gdb除錯多程序除錯
- Linux GDB 程式除錯工具使用詳解Linux除錯
- Pycharm的斷點除錯PyCharm斷點除錯
- js斷點除錯心得JS斷點除錯
- linux下的c/c++偵錯程式gdbLinuxC++
- 斷點除錯之壓縮引發的血案斷點除錯
- 介紹 GDB 除錯 Go除錯Go