首页 > 解决方案 > gdb:在 C++ 中的类函数上创建断点

问题描述

假设以下类:

class a {
   public:
      int getA(int a){
     return 5;
      }
      int getA(int a, int b){
     return 6;
      }
};

int main(){
   a cA;
   std::cout << cA.getA(5) << std::endl;

   return 0;
}

在 gdb 中,我可以使用以下方法设置breakpoint函数getA

b a::getA

但这只是b在第一个函数上设置了一个,我如何b在第二个函数上设置一个(当然不使用行号)

标签: c++gdb

解决方案


在您的 : 中再添加一行main()

std::cout << cA.getA(2,3) << std::endl;

现在,重复你原来的实验。你的结果会有所不同,现在:

(gdb) b a::getA
Breakpoint 1 at 0x40089d: a::getA. (2 locations)

“2 个位置”是 gdb 告诉您它现在为两个重载函数注入断点。单步执行代码将验证这一点。

如果一个符号解析为多重重载函数,则该b命令在每个函数处设置一个断点。

但是因为第二个重载函数是一个内联函数并且它从未在你的原始代码中被调用过,gcc 甚至没有编译它,并且没有什么gdb可以设置断点的。


推荐阅读