有没有办法设置断点使程序停止在特定功能的调用指令?

时间:2014-12-25 07:33:37

标签: c debugging gdb jit

我正在调试一些JIT代码。我将gdb附加到正在运行的进程中。我正在寻找设置断点(或任何其他方式)的方法,这将使每个gdb的{​​{1}}中断/暂停到特定的功能。我知道函数名称。

注意:我可以在call instruction的take分支上设置一个断点,即gdb在函数处中断,但我希望调试器在取得该分支之前就会中断,即call instruction

这可能吗?

由于

1 个答案:

答案 0 :(得分:3)

  

我希望在获取该分支之前调试器应该中断

但为什么呢?在采取分支之前停止(而不是在之后立即停止),绝对没有其他信息。

正如Iwillnotexist Idonotexist正确指出的那样,有很多方法可以调用给定的函数,例如

CALL 0x8(%rax)
CALL %rbx
CALL *0x12345678

此外,在JITted代码中,此类调用指令可能会以非常高的速率生成和丢弃,因此即使您可以神奇地找到它们,您仍然需要刷新断点列表以设置JIT感觉就像。