【发布时间】:2014-03-12 20:35:36
【问题描述】:
我有很多关于 gdb 和 objdump 的问题。
objdump 中的地址
如果我这样做:objdump -d binary-file-name,那么我会得到包含这部分的输出:
Disassembly of section .text:
080484a0 <_start>:
80484a0: 31 ed xor %ebp,%ebp
80484a2: 5e pop %esi
80484a3: 89 e1 mov %esp,%ecx
我假设第一列中的这些数字是地址?但我不明白这些地址是如何知道的,因为当一个进程被加载时,它被放置在内存中的一个随机位置,这意味着代码每次都有不同的地址?或者这些地址是否与进程的地址空间相关?
<_start> 下列出的值是什么?
GDB 单步执行代码
我得到了一个没有源代码的二进制文件。我想单步执行程序,但没有符号信息。我无法在函数名或行号上设置断点。我试图在地址上设置断点并且这有效,但我无法弄清楚如何逐步完成程序。当我做: (gdb) 小号 或者 (gdb) n 它说它没有行信息,只是运行整个功能。 有没有办法单步执行它,或者单步执行组装说明?
【问题讨论】:
标签: assembly gdb memory-address objdump