3
私はDEBUG=1
フラグを使って私のコーヒーを作ります。したがって私はgdbでデバッグすることができました。私はcaffe:gdbを使用してBLOB内のデータにアクセスするにはどうすればよいですか?
で私のブレークポイントを設定し./include/caffe/layer.hpp:451
gdb --args .build_debug/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
:
私のデバッグプログラムはmnist例でした
これは、関数に対応します。
inline Dtype Layer<Dtype>::Forward(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top)
私はこのBLOBのDATAを印刷しようとしていましたが、自分の方法を見つけることができませんでした。
私は何を得ることができることである。
- 底部と頂部はvvectorsのベクトルです。
(gdb) p bottom $30 = std::vector of length 2, capacity 2 = {0x4c24300, 0x4b12fd0} (gdb) what bottom type = const std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > & (gdb) what bottom[0] type = std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> >::reference (gdb) what bottom[0][0] type = caffe::Blob<float>
- 私はこのブロブ
(gdb) p bottom[0][0] $42 = { data_ = { px = 0x4c23710, pn = { pi_ = 0x4c23740 } }, diff_ = { px = 0x4c23fc0, pn = { pi_ = 0x4c23ff0 } }, shape_data_ = { px = 0x4c23f00, pn = { pi_ = 0x4c23f30 } }, shape_ = std::vector of length 2, capacity 2 = {100, 10}, count_ = 1000, capacity_ = 1000 }
のメタデータを見つけることができますが、私は、データの取得に失敗しました。私にできる唯一のことは、私はDATA_と、このブロブのdiff_メンバーを印刷することができますどのように
(gdb) p bottom[0][0].data_ $43 = { px = 0x4c23710, pn = { pi_ = 0x4c23740 } } (gdb) p bottom[0][0].data_.px[0] $44 = { cpu_ptr_ = 0x474fef0, gpu_ptr_ = 0x0, size_ = 4000, head_ = caffe::SyncedMemory::HEAD_AT_CPU, own_cpu_data_ = true, cpu_malloc_use_cuda_ = false, own_gpu_data_ = false, gpu_device_ = -1 }
のですか?