gdb-执行命令n次

gdb-执行命令n次,gdb,Gdb,我正在使用gdb调试器运行一个程序,该程序中有一个循环(sat为10)。 当我进入环路时,我不想进入它。我知道我可以在循环之后创建第二个断点,然后执行c(继续)。但我也记得有可能做一些像n10(接下来的10次)的事情。N10不起作用(gdb没有说我做错了什么,但它没有达到我的预期) 可以运行一个命令n次吗?在之前您知道该命令吗 试着用它一直走到X线 例如: (gdb) until 123 或 (gdb)帮助直到 执行直到程序到达源行 大于当前或指定位置(参数与中断相同 命令)在当前帧内 GD

我正在使用gdb调试器运行一个程序,该程序中有一个循环(sat为10)。 当我进入环路时,我不想进入它。我知道我可以在循环之后创建第二个断点,然后执行c(继续)。但我也记得有可能做一些像n10(接下来的10次)的事情。N10不起作用(gdb没有说我做错了什么,但它没有达到我的预期)


可以运行一个命令n次吗?

在之前您知道该命令吗

试着用它一直走到X线

例如:

(gdb) until 123


(gdb)帮助直到

执行直到程序到达源行 大于当前或指定位置(参数与中断相同 命令)在当前帧内


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()
class RepeatCmd(gdb.Command):
"""
将命令重复n次:
重复命令
"""
定义初始化(自):
超级()。\uuu初始化__(
“repeat cmd”,
gdb.COMMAND_NONE,
gdb.COMPLETE_NONE,
假的
)
def调用(self、arg、from_tty):
args=gdb.string_到_argv(arg)
n=int(参数[0])
cmd=''.join(args[1:])
对于范围(n)中的i:
执行(cmd)
RepeatCmd()


对于该用例,您可能还感兴趣。

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

(gdb) python [gdb.execute('YOUR_COMMAND') for x in range(N)]
它对自定义gdb命令非常有用(请参见gdb定义)

比如说,

(gdb) python [gdb.execute('next') for x in range(10)]
(gdb) python [gdb.execute('step') for x in range(5)]
(gdb) python [gdb.execute('next') for x in range(10)]
(gdb) python [gdb.execute('step') for x in range(5)]