关于在GDB中使用断点命令(breakpoint commands)来保存函数返回值的详细说明如下:
1. 在想要设置条件断点的代码行设置一个无条件的普通断点:
break src.cpp:123
2. 使用命令给这个断点添加断点命令:
commands
// silent表示后续命令不显示在输出中
silent
// 调用函数并将返回值保存到变量中
set $result = obj->getName()
// 在变量上设置条件
condition strcmp($result.c_str(), "hello") == 0
// 继续执行
cont
end
3. 这个断点命令会在断点触发时自动执行,调用函数并保存返回值,然后判断条件是否满足。
4. set变量可以保存任意类型的值,包括函数返回值或指针等。
5. condition 1表示设置一次性断点,判断满足则移除该断点。可以设置condition与ignore count来实现多次中断。
6. 也可以添加多条命令,如打印变量值等辅助调试。
7. end表示断点命令结束。
这样通过断点命令就可以实现在断点处调用函数,获取返回值,并进行条件判断的效果。非常适合用于无法直接访问函数返回值的场景。
另外,保存到变量时也可以使用 convenience变量,用法类似,但convenience变量只在当前断点命令块内可见。
总之,利用断点命令可以大大增强断点的调试能力。
联系客服