我正在调试一些JIT代码。我将gdb
附加到正在运行的进程中。我正在寻找设置断点(或任何其他方式)的方法,这将使每个gdb
的{{1}}中断/暂停到特定的功能。我知道函数名称。
注意:我可以在call instruction
的take分支上设置一个断点,即gdb在函数处中断,但我希望调试器在取得该分支之前就会中断,即call instruction
。
这可能吗?
由于
答案 0 :(得分:3)
我希望在获取该分支之前调试器应该中断
但为什么呢?在采取分支之前停止(而不是在之后立即停止),绝对没有其他信息。
正如Iwillnotexist Idonotexist正确指出的那样,有很多方法可以调用给定的函数,例如
CALL 0x8(%rax)
CALL %rbx
CALL *0x12345678
此外,在JITted代码中,此类调用指令可能会以非常高的速率生成和丢弃,因此即使您可以神奇地找到它们,您仍然需要刷新断点列表以设置JIT感觉就像。