如何在进入主程序(或功能)(GDB)之前设置断点停止

时间:2016-07-16 20:02:47

标签: gdb breakpoints point break

我知道如何在特定行设置断点(所以我可以在第1行设置一个断点) 或者我也可以这样做:

break main(在主程序输入时设置断点)

但是如何在进入某个功能或主程序之前设置一个断点?

如果有人有时间的话。如何在特定断点处开始执行gdb程序(例如,如果我在第7行设置断点)。

1 个答案:

答案 0 :(得分:0)

没有命令(AFAIK)在某些特定函数的所有调用上放置一个断点(可能有多个地方来自调用函数,包括虚函数,函数指针,gdb甚至无法发现)。

如何在多次解释main之前启动,包括here。然后,您可以升级到main。

一般来说,为什么要在输入功能之前停止?区别仅在于参数设置/堆栈。你在函数启动时设置一个断点,然后你移动到上面的框架(" up"命令)并检查它,好像还没有调用函数。

类似地,在代码中的某个随机点恢复执行没有多大意义*,没有正确设置局部变量/寄存器/参数。您可以执行一个功能(使用" call"命令)。这确实有意义。

(*)但有可能,但如果你没有适当地设置上下文,你就会崩溃。做"信息中断"。这将为您提供一个插入断点的地址(让我们说它的0x00000000004005ea。然后将您的PC设置为该地址(在x86-64上将是"设置$ rip = 0x00000000004005ea& #34;),设置你的堆栈,注册等,然后"继续"。