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

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

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

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

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

【问题讨论】:

    标签: debugging assembly visualization intel att


    【解决方案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 格式的代码,用于活性分析等中的不同迭代。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2012-10-22
      • 1970-01-01
      相关资源
      最近更新 更多