使用模板

时间:2016-08-19 01:45:50

标签: python c++ templates gdb breakpoints

我试图在使用模板定义的C ++类成员函数中设置断点。我已经在stackoverflow中寻找解决方案,但无法找到相同的问题。下面是一个显示函数定义的示例代码(来自py-faster-rcnn caffe代码,Dtype定义为float outside)。

template <typename Dtype>
void SoftmaxWithLossLayer<Dtype>::Forward_gpu(
    const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) {
  softmax_layer_->Forward(softmax_bottom_vec_, softmax_top_vec_);
  const Dtype* prob_data = prob_.gpu_data();
  const Dtype* label = bottom[1]->gpu_data();

昨天,我使用

成功设置了断点
br SoftmaxWithLossLayer<float>::Forward_gpu( const vector<Blob<float>*>& , const vector<Blob<float>*>& )

但今天早上,它不起作用!可能是什么问题?如果我使用br filename:linenuber,它就会起作用 (顺便说一句,我使用附加到运行python的进程的DDD,包括由boost包装的C ++库,但我希望这是无关紧要的。)

1 个答案:

答案 0 :(得分:0)

我从未尝试过这个,但您是否考虑过使用nm来确定它在共享库中的定义方式?您可以使用该信息来帮助ddd / gdb始终找到模板方法。