如何在GDB条件断点中明确指定不同返回类型的重载函数?
GDB断点条件中指定重载函数的解决方法
当遇到重载函数导致GDB每次评估断点条件都询问调用哪个版本的情况,你可以用以下方法明确指定目标函数:
强制转换函数指针类型:这是最靠谱的解决方式。比如你要调用返回float的
temp(),把断点条件写成:((float (*)()) temp)() > 0.0这里
(float (*)())是把temp强制转换成无参、返回float的函数指针,GDB会直接定位到你要的重载版本,不会再弹出选择提示。如果目标是返回int的temp(),只需要把转换类型改成(int (*)())即可。利用函数完整签名(针对带参重载):如果重载函数带有参数,也可以通过传入对应类型的参数来明确版本(比如
func((int)0)调用int func(int)),但你的场景是无参函数,所以指针转换的方式更适用。
你之前尝试的"temp return int"写法不符合GDB的语法规范,所以会报错,改用上面的指针转换方式就能解决问题。
内容的提问来源于stack exchange,提问作者user9605929
相关产品推荐
相关产品推荐

