GDB:查看特定地址的程序集?
GDB: look at the assembly at certain address?
我正在开发一些 JIT 编译器,我正在使用 GDB 来启动它,我的代码在某个时候崩溃(段错误),但它在 jitted 代码处崩溃(它们是动态生成的)所以我这样做没有得到堆栈帧信息,但是我得到了以下回溯:
#0 0x0000000001d98f22 in ?? () // JITTED CODE
#1 0x000000000000001d in ?? () // JITTED CODE
#2 ...callattribuite function....
我想知道GDB是否可以反汇编位置0x0000000001d98f22的代码并显示给我。我试过 disas 0x0000000001d98f22
但 GDB 抱怨 No function contains specified address.
编辑: 我自己也修复了这个问题,disas
命令需要一个结束地址才能正常工作。
if it is possible for GDB to disassemble the code at location 0x0000000001d98f22
是:(gdb) x/20i 0x0000000001d98f22
如果您的 JIT 是由 Java 完成的,您还应该阅读 this answer。
我正在开发一些 JIT 编译器,我正在使用 GDB 来启动它,我的代码在某个时候崩溃(段错误),但它在 jitted 代码处崩溃(它们是动态生成的)所以我这样做没有得到堆栈帧信息,但是我得到了以下回溯:
#0 0x0000000001d98f22 in ?? () // JITTED CODE
#1 0x000000000000001d in ?? () // JITTED CODE
#2 ...callattribuite function....
我想知道GDB是否可以反汇编位置0x0000000001d98f22的代码并显示给我。我试过 disas 0x0000000001d98f22
但 GDB 抱怨 No function contains specified address.
编辑: 我自己也修复了这个问题,disas
命令需要一个结束地址才能正常工作。
if it is possible for GDB to disassemble the code at location
0x0000000001d98f22
是:(gdb) x/20i 0x0000000001d98f22
如果您的 JIT 是由 Java 完成的,您还应该阅读 this answer。