【发布时间】:2013-12-23 23:16:28
【问题描述】:
据我所知,基本上,
如果我们使用 GDB 调试从 C 源代码编译的执行代码, 编译器会将源代码路径留在 ELF/PE 文件中,所以 GDB 将使用源代码来促进我们的调试过程。
但是GDB如何在上述过程中提供asm代码信息呢?我举一个在我的电脑上捕获的例子如下:
所以我的问题是:
- GDB如何提供asm代码?这个asm代码是反汇编生成的吗?
- 如果是这样,那么GDB如何保证反汇编的准确性? 据我所知,使用的像OBJDUMP这样的线性反汇编算法无法区分数据和代码,像IDA pro这样的商业工具也会时不时出错
谁能给我一些帮助?谢谢!
【问题讨论】:
-
eli.thegreenplace.net/2011/02/07/… 似乎很好地涵盖了基础知识。
-
你有没有使用过
objdump?它通常在从代码中分辨数据方面做得很好。 -
@KerrekSB 你好,我写一个简单的例子:gist.github.com/computereasy/8222328
标签: debugging assembly compiler-construction gdb disassembly