c++ - 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
在第二个函数上设置一个(当然不使用行号)
解决方案
在您的 : 中再添加一行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
可以设置断点的。
推荐阅读
- java - Java 的 intern() 方法如何处理在运行时创建的此类字符串
- java - 如何打破循环依赖并成为规范?
- reactjs - React Native Expo - 禁用自动更新
- php - .htaccess 重定向豁免
- react-native - 在反应原生中更改个人资料图片或图像
- angular - BehaviorSubject.value 未定义且 BehaviorSubject.next() 不是函数
- javascript - javascript setTimeout 未按预期工作
- r - 运行多个逐步线性回归模型以预测 r 中的 NA 值
- postgresql - 在日期字段上使用索引时,PostgreSQL 表导出查询的性能低下
- gitlab - 在 gitlab ci 阶段构建安装程序