6

假设我在 A() 中,A() 调用 B()。我刚刚输入了 A(),我希望程序运行直到我进入 B()。它不必是特定的函数 B()。我只想让我的程序在进入新功能时暂停。有没有办法做到这一点?

4

2 回答 2

3

对于调用,如在:应用程序中进行的所有函数调用的列表中所述:

set confirm off
rbreak .

rbreak为匹配给定正则表达式的每个函数设置断点,.匹配所有函数。

对于具有许多功能的大型可执行文件,此命令可能需要一段时间才能运行。但是一旦完成,运行时将是高效的。

退出比较棘手,因为我们在编译时不知道我们将降落在哪里:如何在函数返回的 GDB 中设置断点?

如何使用 GDB 中的特定操作码中断指令?我还提供了一个脚本,该脚本可以单步执行,直到找到所需的指令,您可以使用它来查找callq. 那个的好处是不会让你等待一个大的可执行文件,但是执行会很慢,所以目标不能离得很远。

于 2015-07-06T15:25:47.173 回答
1

call在指令上设置断点的形式会有一个很好的解决方案,但正如这个答案所说,没有办法做到这一点。

我认为,最简单的解决方案是手动设置断点或尝试在 Python 中编写脚本,在当前函数列表中找到函数调用并设置所需的断点。

于 2013-02-04T20:06:02.500 回答