为使用模板编写的 C++ class 成员函数设置 GDB 断点

setting GDB breakpoint for C++ class member function written using template

我正在尝试在使用模板定义的 C++ class 成员函数处设置断点。我在 Whosebug 中寻找解决方案,但找不到相同的问题。下面是函数定义的示例代码(来自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++ 库,但我希望这是无关紧要的。)

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