有没有办法在遇到断点时执行一组 GDB 命令?

Is there a way to execute a set of GDB commands when a break point is hit?

我正在尝试通过注册一组与特定断点关联的命令来实现类似“半主机”的功能,例如:

print buffer[0]
cont

因此计划将模拟值实时转储到 GDB 客户端控制台,从而简化开发过程。

GDB 是否可以在第 38 行(例如)命中断点时执行上述示例命令? (我需要 运行 在另一个断点上执行不同的命令集)

您在 gdb 中添加的每个断点都有一个编号。您可以看到带有 i binfo breakpoints 的缩写)的数字。假设您想将命令添加到断点 2,只需键入 commands 2 并按 ENTER。现在,在遇到断点 2 时键入您希望 gdb 执行 运行 的命令(每行一个)。当您想完成输入命令时,键入 end.

提示:如果您希望 gdb 继续执行而不是停止,可以在 end 之前添加 continue 命令。也就是说,如果您只是添加到断点以向其添加命令但您不希望执行停在那里。例如,如果您只想打印某个变量的值,或者即使您想要创建另一个断点,但前提是首先到达某个特定的代码路径。无限可能。