LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 801|回复: 1

关于gdb的disass.

[复制链接]
发表于 2005-6-15 01:25:04 | 显示全部楼层 |阅读模式

  1. Using host libthread_db library "/lib/libthread_db.so.1".
  2. (gdb) disass main
  3. Dump of assembler code for function main:
  4. 0x08048384 <main+0>:    push   %ebp
  5. 0x08048385 <main+1>:    mov    %esp,%ebp
  6. 0x08048387 <main+3>:    sub    $0x8,%esp
  7. 0x0804838a <main+6>:    and    $0xfffffff0,%esp
  8. 0x0804838d <main+9>:    mov    $0x0,%eax
  9. 0x08048392 <main+14>:   sub    %eax,%esp
  10. 0x08048394 <main+16>:   movl   $0x80484c4,(%esp)
  11. 0x0804839b <main+23>:   call   0x80482a0 <_init+56>
  12. 0x080483a0 <main+28>:   mov    $0x0,%eax
  13. 0x080483a5 <main+33>:   leave
  14. 0x080483a6 <main+34>:   ret
  15. End of assembler dump.
  16. (gdb) b * 0x0804839b
  17. Breakpoint 1 at 0x804839b: file elf_test.c, line 4.
  18. (gdb) r
  19. Starting program: /home/linuxbuddy/libpcap/mysniffer/elf_test

  20. Breakpoint 1, 0x0804839b in main (argc=1, argv=0xbffff994) at elf_test.c:4
  21. 4       printf("Hello, world\n");
  22. (gdb) disass  0x80482a0
  23. No function contains specified address.

  24. (gdb) info symbol  0x80482a0
  25. No symbol matches 0x80482a0.
  26. (gdb)

复制代码

0x80482a0 处应该是一个被call的函数,为什么反汇编的时候显示No function contains specified address.??
我刚刚学习使用gdb,所以对disass不是很了解,希望高手指教---------
 楼主| 发表于 2005-6-15 11:12:18 | 显示全部楼层
纠正一下,0x80482a0不是一个函数,而是一个过程联接表表项的起始地址---所以才会出现上边的错误
很抱歉浪费空间了,我刚刚知道如何反编译特定地址的指令了.

  1. (gdb) disass  0x80482a0 0x80482ac
  2. Dump of assembler code from 0x80482a0 to 0x80482ac:
  3. 0x080482a0 <_init+40>:  jmp    *0x80495e0
  4. 0x080482a6 <_init+46>:  push   $0x0
  5. 0x080482ab <_init+51>:  jmp    0x8048290 <_init+24>
  6. End of assembler dump.
  7. (gdb)
复制代码

3*4*8正好是一个过程联接表项..  :%  :%  :%  :%  :%
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表