1

我已阅读以下 SO 问题: Do specific action when certain breakpoint hits in gdb

在这里,我们使用“命令”来决定当指定的断点被击中时要做什么。

我的问题是:

假设我在与给定模式匹配的所有函数上放置断点:

gdb$rbreak func_

=> 100 个断点(比如说)

当我执行这段代码时,我想做同样的动作——点击这些函数中的每一个。

因此,我无法定义类似:

command break_point_number 

// 因为我不知道会有多少断点

有人可以建议我:

当任何断点在 GDB 中被命中时,我如何执行特定的操作集?

谢谢。

4

1 回答 1

3

使用足够新的 gdb 版本,您可以使用一个范围:

(gdb) rbreak whatever
... gdb creates breakpoints N, N+1, ..., M
(gdb) commands N-M
> stuff
> end

我忘记了这个功能是什么时候加入的。

使用旧版本的 gdb,我不确定它是否可以轻松完成。

很难做到:使用 set logging 将输出写入文件,然后使用“info break”,然后使用“shell”运行脚本以将文件编辑为 gdb 命令,然后使用“source”。这是非常痛苦的。

于 2013-08-16T02:33:59.927 回答