我在当前位置无法进行反汇编。 GDB无法将.
(点)识别为"此处":
(gdb) disass .
A syntax error in expression, near `.'.
从函数的开头发出disass $pc
反汇编,而不是#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>
答案 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