如何告诉 GDB 在给定地址反汇编 N 条指令,同时显示原始字节?
How to tell GDB to disassemble N instructions at given address, also showing the raw bytes?
我知道两种GDB反汇编模式:
第一个命令用于显示指令和原始字节,但它似乎不接受要反汇编的指令数——仅内存范围:
disas/r $pc,+30
第二个命令可以恰好反汇编 N 条指令,如下所示,但没有原始字节:
x/10i $pc
我想要混合使用这两种模式:使原始字节可见,如 disas/r
中那样,并且能够指定要反汇编的确切指令数,如 x/10i
中那样。我可以用 GDB 做吗?
没有内置方法可以执行此操作。 (顺便说一句,在我看来这有点疏忽,也许一个错误报告要求 x/i
能够显示字节会很好。)]
如果你真的需要这个,有一种方法可以自己实现。基本思路是在Python中写一条新命令。此命令可以包装 disassemble
命令(使用 gdb.execute
和 to_string
参数),然后将其输出限制为 N
指令。
我知道两种GDB反汇编模式:
第一个命令用于显示指令和原始字节,但它似乎不接受要反汇编的指令数——仅内存范围:
disas/r $pc,+30
第二个命令可以恰好反汇编 N 条指令,如下所示,但没有原始字节:
x/10i $pc
我想要混合使用这两种模式:使原始字节可见,如 disas/r
中那样,并且能够指定要反汇编的确切指令数,如 x/10i
中那样。我可以用 GDB 做吗?
没有内置方法可以执行此操作。 (顺便说一句,在我看来这有点疏忽,也许一个错误报告要求 x/i
能够显示字节会很好。)]
如果你真的需要这个,有一种方法可以自己实现。基本思路是在Python中写一条新命令。此命令可以包装 disassemble
命令(使用 gdb.execute
和 to_string
参数),然后将其输出限制为 N
指令。