英特尔 AT&T 汇编程序的逐步执行?

Posted

技术标签:

【中文标题】英特尔 AT&T 汇编程序的逐步执行?【英文标题】:Step-by-step execution for Intel AT&T assembler? 【发布时间】:2010-04-13 17:50:50 【问题描述】:

我正在编写一个编译器,它将源代码(用一种小型命令式编程语言编写)转换为 Intel AT&T 32 位汇编器。

由于生成的代码中存在严重的偏移错误等,我倾向于花费大量时间进行调试,我想知道是否有人知道一个工具可以逐步“遍历”生成的汇编代码-step,可视化堆栈上的内容等。

我使用 Ubuntu Linux 作为我的开发平台,而且我对终端很满意——不过 GUI 程序会很好。它存在吗?或者是否有充分的理由不这样做(也许问题不是那么简单......?)

如果您对在汇编代码中处理调试任务有好的想法,我很高兴收到您的来信!

【问题讨论】:

【参考方案1】:

我喜欢 Linux 上的 EDB(Evan 的调试器)。它有一个不错的、易于使用的、基于 QT4 的 GUI。它的开发者的目标是使它类似于 OllyDbg。它正在积极维护中:

EDB on FreshMeat

我很确定它也可以通过 Ubuntu 上的 Synaptic 安装。享受吧!

【讨论】:

我发现 EDB 实际上不能通过 Synaptic 获得。您必须从 FreshMeat 提供的源代码包中编译它。【参考方案2】:

编译过程的最终结果是否可以实际执行,因此可以在调试器中检查?如果是这样,Data Display Debugger (ddd) 可能会有用。

【讨论】:

.. 它给出了“[currentdir]/sysdeps/i386/elf/start.S: No such file or directory”错误——也许我必须实现类似于“-g”的东西我的编译器中 gcc 中的选项.. :-/.. 一些快速的互联网搜索表明了一些类似的东西。我的猜测(纯粹的猜测)是 ddd 基础的 gdb 正试图找到适合插入初始断点的地方。如果您使用“as”编译生成的汇编程序,那么它也可以理解 -g。【参考方案3】:

我在使用 Olly 和 EDB 等调试器方面的经验非常少,因此我无法解决这些问题。我结束了

在源代码中分散调用Debug function,确定错误的寄存器值 让编译器输出带有有用元数据的 html 格式的代码,用于活性分析等中的不同迭代。

【讨论】:

以上是关于英特尔 AT&T 汇编程序的逐步执行?的主要内容,如果未能解决你的问题,请参考以下文章

需要一个很好的 AT&T 汇编语法来源

使用 AT&T 语法时汇编程序崩溃 [重复]

内联汇编中的 vpcmpeqb

C指针原理-AT&T汇编

AT&T x86_32 汇编_001_一个示例程序.md

AT&T汇编语法与x86语法基本区别