GDB:查看某个地址的程序集?

dor*_*mon 4 debugging gcc jit gdb gnu

我正在开发一些 JIT 编译器,我正在使用 GDB 来首次亮相,我的代码在某个时刻崩溃(段错误),但它在 jitted 代码处崩溃(它们是动态生成的),所以我没有得到堆栈帧信息,但我得到以下回溯:

#0  0x0000000001d98f22 in ?? () // JITTED CODE
#1  0x000000000000001d in ?? () // JITTED CODE
#2  ...callattribuite function....
Run Code Online (Sandbox Code Playgroud)

我想知道 GDB 是否可以反汇编位置 0x0000000001d98f22 处的代码并将其显示给我。我尝试过disas 0x0000000001d98f22,但 GDB 抱怨No function contains specified address.


编辑:我自己也修复了这个问题,该disas命令需要一个结束地址才能正常工作。

Emp*_*ian 5

GDB 是否可以反汇编该位置的代码0x0000000001d98f22

是的:(gdb) x/20i 0x0000000001d98f22

如果你的 JIT 是由 Java 完成的,你还应该阅读这个答案