如何别名&#39; disass <something>&#39;在当前位置进行拆卸?

时间:2017-05-08 22:15:43

标签: gdb disassembly

我在当前位置无法进行反汇编。 GDB无法将.(点)识别为&#34;此处&#34;:

(gdb) disass .
A syntax error in expression, near `.'.

从函数的开头发出disass $pc反汇编,而不是#34;这里&#34;:

(gdb) disass $pc
Dump of assembler code for function _ZN8CryptoPP6RDSEED13GenerateBlockEPhm:
   0x000000000056b962 <+0>:     push   %r13
   0x000000000056b964 <+2>:     push   %r12
   0x000000000056b966 <+4>:     push   %rbp
...

<skip 5 pages of output>

   0x000000000056ba88 <+294>:   mov    %rdi,0x8(%rsp)
=> 0x000000000056ba8d <+299>:   test   %edx,%edx
   0x000000000056ba8f <+301>:   je     0x56ba7f <_ZN8CryptoPP6RDSEED13GenerateBlockEPhm+285>
...

如何创建别名或规则以在当前位置提供反汇编,在当前位置之前提供一些指令,以及在当前位置之前提供一些指令?

看起来这应该是内置功能,但GDB似乎没有提供它。其他低级调试器,如WinDbg,具有内置功能。<​​/ p>

1 个答案:

答案 0 :(得分:1)

disas反汇编整个函数(按照设计和记录)。

您正在寻找x/10i $pc(用所需数量的说明代替10)。

  

我怎么能用别名代替。到上面的命令?

有GDB alias命令,但它拒绝我尝试使用它:

(gdb) alias ds = x/10i $pc
Invalid command to alias to: x/10i $pc

用户定义的命令有效:

(gdb) define disas
Type commands for definition of "disas".
End with a line saying just "end".
>x/10i $pc
>end