Linux:gdb反汇编disassemble

gdb反汇编可用disassemble/disass命令。用法如下:
 

1、基本功能介绍

disassemble

disassemble [Function]

        指定要反汇编的函数。如果指定,反汇编命令将产生整个函数的反汇编输出。

(gdb) disassemble main

disassemble [Address]

        指定要反汇编的地址。请注意,当仅指定一个地址时,此命令将反汇编包含给定地址的整个函数,包括其上方的指令。

(gdb) disassemble 0x00000000004008fd

disassemble [Start],[End]

        指定要反汇编的起始地址和结束地址。如果使用这种形式,该命令将不会反汇编整个函数,而只会反汇编起始地址和结束地址之间的指令。例如:

(gdb) disassemble 0x000000000040068a,0x00000000004006ac

disassemble [Function],+[Length]
disassemble [Address],+[Length]

        指定从给定地址或函数开始反汇编的字节数,例如:

(gdb) disassemble main, +10

disassemble /m [...]
        指定此选项后,反汇编命令将显示与反汇编指令相对应的源代码行。例如:

(gdb) disassemble /m main
Dump of assembler code for function main:
4 {
    0x00000000004005d6 <+0>: push %rbp
    0x00000000004005d7 <+1>: mov %rsp,%rbp
    0x00000000004005da <+4>: sub $0xd0,%rsp
 
 
5 float vcs[16] = {0.931,0.928,0.925,0.922,0.920,0.917,0.914,0.911,0.904,0.896,0.889,0.881,0.874,0.866,0.859,0.851};
    0x00000000004005e1 <+11>: movss 0x4a7(%rip),%xmm0 # 0x400a90
    0x00000000004005e9 <+19>: movss %xmm0,-0x50(%rbp)
    0x00000000004005ee <+24>: movss 0x49e(%rip),%xmm0 # 0x400a94
    0x00000000004005f6 <+32>: movss %xmm0,-0x4c(%rbp)

disassemble /r [...]
        当指定此选项时,反汇编命令将显示所有反汇编指令的原始字节值。

(gdb) disassemble /r main
Dump of assembler code for function main:
    0x00000000004005d6 <+0>: 55 push %rbp
    0x00000000004005d7 <+1>: 48 89 e5 mov %rsp,%rbp
    0x00000000004005da <+4>: 48 81 ec d0 00 00 00 sub $0xd0,%rsp
    0x00000000004005e1 <+11>: f3 0f 10 05 a7 04 00 00 movss 0x4a7(%rip),%xmm0 # 0x400a90
    0x00000000004005e9 <+19>: f3 0f 11 45 b0 movss %xmm0,-0x50(%rbp)
    0x00000000004005ee <+24>: f3 0f 10 05 9e 04 00 00 movss 0x49e(%rip),%xmm0 # 0x400a94
    0x00000000004005f6 <+32>: f3 0f 11 45 b4 movss %xmm0,-0x4c(%rbp)
 
    0x00000000004005fb <+37>: f3 0f 10 05 95 04 00 00 movss 0x495(%rip),%xmm0 # 0x400a98

2、扩展

汇编语言常用命令

3、参考

GDB Command Reference - disassemble command

猜你喜欢

转载自blog.csdn.net/hhd1988/article/details/128635463