2017-05-08 1 views
0

현재 위치에서 디스 어셈블리하는 데 문제가 있습니다. GDB는 "여기"로 . (점)을 인식하지 못하는'disass <something>'의 별칭을 현재 위치에서 분해하는 방법은 무엇입니까?

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

은 "여기"함수의 시작부터 disass $pc 분해를 발행하지 :

(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와 같은 다른 저수준 디버거에는 기본 제공 기능이 있습니다.

답변

1

disas은 (설계되고 문서화 된대로) 전체 기능을 디스 어셈블합니다.

x/10i $pc을 찾고 있습니다 (원하는 수의 지침을 10 개 사용).

어떻게 별칭을 disass 할 수 있습니까? 위의 명령에?

은 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 
+0

감사합니다. 위의 명령에'disass. '라고 어떻게 할 수 있습니까? 여분의 타이핑을 수행하거나 여분의 명령을 기억하려고하지 않습니다. – jww

+0

@jww 답변을 업데이트했습니다. –

관련 문제