在进入主程序(或函数)(GDB)之前,如何设置断点以停止

在进入主程序(或函数)(GDB)之前,如何设置断点以停止,gdb,breakpoints,point,break,Gdb,Breakpoints,Point,Break,我知道如何在特定行设置断点(这样我就可以在第1行设置断点) 或者我也可以做: 中断主程序(在主程序进入时设置中断点) 但在它进入某个函数或主程序之前,如何设置断点 如果有人有时间的话。如何在特定断点处开始执行gdb程序(例如,如果我在第7行设置断点) 没有命令(AFAIK)可以在某个特定函数的所有调用上设置断点(可以在多个位置调用函数,包括虚拟函数、函数指针,gdb甚至无法发现) 在main被多次解释之前如何启动,包括。然后,你可以走到main 一般来说,为什么在输入函数之前要停止?区别仅在于参

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

中断主程序(在主程序进入时设置中断点)

但在它进入某个函数或主程序之前,如何设置断点

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

没有命令(AFAIK)可以在某个特定函数的所有调用上设置断点(可以在多个位置调用函数,包括虚拟函数、函数指针,gdb甚至无法发现)

在main被多次解释之前如何启动,包括。然后,你可以走到main

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

类似地,在没有正确设置局部变量/寄存器/参数的情况下,在代码中的某个随机点恢复执行也没有多大意义。您可以执行一个函数(使用“call”命令)。这是有道理的


(*)这是可能的,但是如果您没有正确设置上下文,您将崩溃。做“信息中断”。这将为您提供一个插入断点的地址(假设它是0x00000000004005ea。然后将您的PC设置为该地址(在x86-64上为“set$rip=0x00000000004005ea”)、设置堆栈、寄存器等,然后“继续”.

我目前正在准备考试,这是过去考试中的一道逐字逐句的问题。我知道这道问题有点奇怪。在进入主程序(或函数..等)之前,我所涵盖的学习材料都没有设置断点,所以我想知道我是否遗漏了什么。谢谢!