是否可以使用gdb的if
或while
条件来测试gdb命令成功(而不是查询程序值或变量)?
现在为了清楚起见我正在谈论gdb内置命令(即在gdb中键入help
时出现的事情 - 而不是测试中的命令。
特别是我有一个带有大量时序问题的远程目标,当系统处于高负载状态时gdbserver
有时无法启动,我想重复命令直到成功。类似的东西:
while ! target extended-remote | ssh -T target gdbserver --once - ./binary args
print "Again"
end
或者有一种方法可以将gdb
命令成功转换为可用作条件的变量 - 例如在bash中它将是$?
。类似的东西:
target extended-remote | ssh -T target gdbserver --once - ./binary args
if <last command failed>
# handle failure
end
答案 0 :(得分:1)
使用gdb CLI无法做到这一点。这是CLI作为一种语言的众多缺陷之一。
然而,使用gdb的Python脚本功能从Python相对容易。一种方法是扩展ignore-errors
命令以设置一些便于你测试的便利变量。