gpt4 book ai didi

c++ - gdb:在c++中的类函数上设置断点

转载 作者:行者123 更新时间:2023-11-30 02:16:08 38 4
gpt4 key购买 nike

假设有以下类:

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 中,我可以使用以下方法在 getA 函数上设置一个断点:

b a::getA

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

最佳答案

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

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

现在,重复您最初的实验。现在你的结果会有所不同:

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

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

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

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

关于c++ - gdb:在c++中的类函数上设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55349507/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com