1 用gdb除錯的好處
gdb是除錯c++**很有用的工具。在caffe上也是如此。用gdb除錯caffe對於初學者來說可以更好的了解caffe的整個內部微觀機制。並且是更有效理解caffe原始碼的好辦法。
2 準備工作
只有將caffe原始碼以debug模式進行編譯才能夠進行除錯,否則編譯器會進行優化忽略debug infomation,這樣無法設定斷點進入原始碼內部。
make clean;
make all -j12;
到此為止,linux下的caffe原始碼就編譯成功了。
3 邊執行邊debug
//用gdb除錯
gdb ../../build/tools/caffe
//設定引數
set args train -solver lenet_solver.prototxt
//設定斷點
b base_conv_layer.cpp:120
//run起來
r
//如果到了斷點的地方停下來,那麼進入
s
//單步除錯
n
//列印
p
//展示**
l
//檢視堆疊
bt
//檢視某個堆疊詳細資訊
info 1
GDB堆疊跟蹤
gdb堆疊跟蹤的方法 程式 呼叫堆疊 是當前函式之前的所有已呼叫函式的列表 包括當前函式 每個函式及其變數都被分配了乙個 幀 最近呼叫的函式在 0 號幀中 底部 幀 要列印堆疊,發出命令 bt backtrace 回溯 的縮寫 gdb bt 0 0x80483ea in wib no1 8,no2 ...
gdb檢視記憶體中所有的資訊
他們會把做核心的人當成無所不能的,認為你們對反編譯啥的都應該會。俗話說的好,人要活成別人想要的樣子嘛 看下如何停止程序,讓大家看到記憶體中到底是啥樣子 簡單的print globala當然能輸出來變數globala的位址以及這個位址中的值,但是如果這裡是乙個鍊錶,能通過程式設計的方法把這裡的數值給d...
gdb列印記憶體位元組
x 16bx address 單位元組16進製制列印address位址處的長度為16的空間的記憶體,16表示空間長度,不是16進製制,x表示16進製制,b表示byte單位元組 詳解 x n f u是可選的引數。n是乙個正整數,表示需要顯示的記憶體單元的個數,也就是說從當前位址向後顯示幾個 記憶體單元...