我正在使用gdb调试器来运行一个包含循环的程序(让我们坐10)。 当我进入循环时,我不想进入它。我知道我可以在循环之后创建第二个断点而不是c(继续)。但我也记得有可能做n 10(接下来的10次)。 n 10不起作用(gdb并没有说我做错了什么,但它没有做我期待的事情。)
是否可以运行命令n次?
答案 0 :(得分:3)
你知道命令until
吗?
尝试使用它直到第X行。
示例:
(gdb) until 123
或
(gdb) u 123
(gdb) help until
执行直到程序到达源代码行 大于当前或指定的位置(与break相同的args) 命令)在当前帧内。
答案 1 :(得分:0)
GDB Python API
如果确实需要,您可以使用GDB Python API运行n次命令:
class RepeatCmd(gdb.Command):
"""
Repeat a command n times:
repeat-cmd <n> <cmd>
"""
def __init__(self):
super().__init__(
'repeat-cmd',
gdb.COMMAND_NONE,
gdb.COMPLETE_NONE,
False
)
def invoke(self, arg, from_tty):
args = gdb.string_to_argv(arg)
n = int(args[0])
cmd = ' '.join(args[1:])
for i in range(n):
gdb.execute(cmd)
RepeatCmd()
对于用例,您可能还对continue <n>
感兴趣。
答案 2 :(得分:0)
要执行N次任何gdb命令,最简单的方法是:
(gdb) python [gdb.execute('YOUR_COMMAND\n') for x in range(N)]
这对于您的自定义gdb命令(请参见gdb定义)很有帮助