1 Linux C++調試(GDB調試)
基本條件:會寫Makefile文件,會使用終端編譯。(若不會,可以參考我的博客實例)
參考網站:https://jingyan.baidu.com/article/acf728fd464984f8e410a369.html
Makefile編譯運行後,最後生成main文件,調試過程如下:
1)命令行輸入$gdb;
2)命令行輸入$file main #調試生成的main文件;
3)命令行輸入$l #查看cpp文件代碼;
4)命令行輸入$b 13 #在代碼的第13行設置斷點;
命令行輸入$b 函數名 #在具體某一函數處設置斷點;b main即在主函數開始處設置斷點;
5)命令行輸入$r #從開始運行代碼,在斷點處停止;
6)命令行輸入$n #單步調試,從當前代碼開始,一步步執行;
7)命令行輸入$print 變量 #打印出自己想要看到的變量值;
8)命令行輸入$s #進入函數
9)命令行輸入$set args param1 param2……即可加入參數進行調試。(參考:http://visualgdb.com/gdbreference/commands/set_args)
cuda-gdb調試caffe參考網站:https://blog.csdn.net/u010158659/article/details/78418701
10)命令行輸入$ptype 變量(var) #輸出變量類型
11)命令行輸入$x/12xb &var #查看內存。&var爲首地址, 12爲數據塊字節數
12)命令行輸入$b filename:N #指定文件filename第N行設置斷點
2 Linux python調試(pdb調試)
參考網站:https://blog.csdn.net/linda1000/article/details/11031771
我直接選用一種常用方法了!
1)在需要調試的python代碼中,選定一個斷點,在斷點對應位置寫入(即設置斷點):
import pdb
pdb.set_trace()
2)使用命令python *.py運行程序;
3)程序會停在設置的斷點處,方可利用多種命令查看變量、查找問題。
命令如下:
(Pdb)p param #查看當前 變量值
(Pdb)l #查看運行到某處代碼
(Pdb)a #查看全部棧內變量
停止調試輸入q即可。
輔助命令:terminal上內容搜索:Ctrl + Shift + F
3 linux下java程序調試JDB
1)編譯時加入-g
javac -g -classpath ./ helloWorld.java
2)JDB進入調試
jdb -classpath ./ helloWorld
3)打函數斷點(停在main函數)
stop in helloWorld.main
Deferring breakpoint helloWorld.main.
It will be set after the class is loaded.
某一行打斷點:stop at helloWorld:12
4)運行至main函數
run
Breakpoint hit: "thread=main", helloWorld.main(), line=4 bci=0
4 System.out.println("Hello world");
5)部分命令
- 單步運行:next
- 查看局部變量:locals
- 查看當前代碼:list
- 停止:exit
4 VScode調試caffe
這裏採用的是比較簡單的方式調試caffe,原理就是GDB調試的原理!只是用VScode集成了很多功能。
1)編譯
step1_1:修改Makefile.config文件:取消DEBUG的註釋;
step1_2:編譯。我直接在caffe目錄下,採用命令行編譯,即:make clean && make all -j32 && make pycaffe #make clean就是清除之前編譯產生的文件,make all -j32是爲了加速編譯,make pycaffe編譯的是caffe中的python接口。
2)調試
step2_1:用VScode打開caffe根目錄;
step2_2:寫GDB的launch.json文件:(調試->添加配置->選GDB(這裏沒有的話就需要先配置C/C++的擴展)->修改"program"和"args"項)
"program": "${workspaceFolder}/build/tools/caffe.bin",
"args": ["train","--solver=examples/mnist/solver.prototxt"],
step2_3:在程序中插入斷點,啓動調試即可。
ps:vscode調試需要保證protobuf環境等沒有問題,同時我只能在cpp文件中插斷點,因此目前只能調試cpu-only模式。
調試模式下的VScode快捷鍵:F5-運行到下一個斷點,F11-單步調試,調試窗口中可以查看當前Local變量