我知道如何在特定行设置断点(所以我可以在第1行设置一个断点) 或者我也可以这样做:
break main(在主程序输入时设置断点)
但是如何在进入某个功能或主程序之前设置一个断点?
如果有人有时间的话。如何在特定断点处开始执行gdb程序(例如,如果我在第7行设置断点)。
答案 0 :(得分:0)
没有命令(AFAIK)在某些特定函数的所有调用上放置一个断点(可能有多个地方来自调用函数,包括虚函数,函数指针,gdb甚至无法发现)。
如何在多次解释main之前启动,包括here。然后,您可以升级到main。
一般来说,为什么要在输入功能之前停止?区别仅在于参数设置/堆栈。你在函数启动时设置一个断点,然后你移动到上面的框架(" up"命令)并检查它,好像还没有调用函数。
类似地,在代码中的某个随机点恢复执行没有多大意义*,没有正确设置局部变量/寄存器/参数。您可以执行一个功能(使用" call"命令)。这确实有意义。
(*)但有可能,但如果你没有适当地设置上下文,你就会崩溃。做"信息中断"。这将为您提供一个插入断点的地址(让我们说它的0x00000000004005ea。然后将您的PC设置为该地址(在x86-64上将是"设置$ rip = 0x00000000004005ea& #34;),设置你的堆栈,注册等,然后"继续"。