gdb - 执行n次

时间:2017-09-21 09:05:34

标签: gdb

我正在使用gdb调试器来运行一个包含循环的程序(让我们坐10)。 当我进入循环时,我不想进入它。我知道我可以在循环之后创建第二个断点而不是c(继续)。但我也记得有可能做n 10(接下来的10次)。 n 10不起作用(gdb并没有说我做错了什么,但它没有做我期待的事情。)

是否可以运行命令n次?

3 个答案:

答案 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()

GitHub upstream

对于用例,您可能还对continue <n>感兴趣。

答案 2 :(得分:0)

要执行N次任何gdb命令,最简单的方法是:

(gdb) python [gdb.execute('YOUR_COMMAND\n') for x in range(N)]

这对于您的自定义gdb命令(请参见gdb定义)很有帮助