gpt4 book ai didi

debugging - 关于如何编写调试格式转换工具的建议

转载 作者:行者123 更新时间:2023-12-03 06:50:17 26 4
gpt4 key购买 nike

我正在寻找编写一个工具,旨在将一种格式的调试符号转换为另一种在 GDB 下兼容使用的格式。这似乎是一个乏味且可能复杂的项目,所以我不确定如何解决它。

最初,我的目标是将 borland 编译器发出的 Turbo 调试符号表(TDS)转换为诸如 stats 或 dwarf 格式(根据我的研究,似乎 dwarf 更受欢迎)。但理想情况下,我希望将我的工具设计得足够容易扩展,以便以后也可以转换其他格式。例如codeview4 甚至 pdb。

我创建这个的主要动机是:

  • 互操作性。如果我可以将外部调试格式转换为 gdb 可以使用的形式,那么可以对从 gcc 之外的其他编译器编译的二进制文件进行源代码级调试。这意味着任何使用 gdb 作为后端的前端调试界面都可以工作。
  • 不存在其他工具。我在谷歌上搜索了类似的工具,我发现的最接近的是 tds2dbg 。但它并不能完全满足我的要求。

我现在必须处理的事情:

  • 我已经有一个 debug hook API可以理解TDS调试格式。我可以用它来帮助我从要转换的源格式中获取所需的信息。
  • 对于这个项目的范围,我主要感兴趣的是让它在 win32 环境下工作。我并不真正关心的其他平台和工具。
  • 我要转换成的目标矮人调试格式。这个我实在是一点也不熟悉。我之前使用过像 MinGW 这样的 gcc 移植编译器,并使用 dwarf 格式的 gdb 对其进行调试。但我不知道这种格式在 Windows 上是如何实现的。

最后一点是我关心的一点。我正在阅读 dwarf 规范文档,但我发现我很难真正理解和理解它的工作原理。那里有很多细节,但同时它没有任何关于 dwarf 如何在原生不使用 ELF 的平台上的对象文件和图像文件上实现的细节——即 Windows 使用的 PE-COFF 格式。该文档读起来也非常枯燥,长句子让人难以理解,图表和插图也很少。我遇到了一个名为 libDwarf 的 API这应该可以消除解释 dwarf 的大部分解析工作。问题是我仍在尝试构建它,但我还不知道它会如何实现。

我还没有编写任何代码,因为我不完全理解我需要构建什么。我有一种感觉,由于 dwarf 的复杂性,最大的困难将是弄清楚如何使用 dwarf。谷歌搜索有关 dwarf 在 Windows 下如何工作的信息也没有找到任何有用的信息。例如,没有关于在 PE 可执行镜像文件中包含 dwarf 所需的“粘合”代码的信息。矮人部分是如何精确布局的?每个部分都有标题信息吗? GDB 显然不只是获取“原始”矮人调试文件并按原样使用它。那么 gdb 期望调试文件采用哪种格式才能使用它?

我的问题是,我如何开始这样的项目?更重要的是,当我不可避免地遇到问题时,我可以向哪里寻求帮助?

最佳答案

适用于 Windows 的 Affinic 汇编器

Affinic Assembler 是一个适用于 Windows 的 x86/x86-64 汇编器,它采用带有 DWARF 调试信息的 GAS 语法汇编源,并在目标文件中生成相应的 CodeView 格式部分,以便使链接的程序在 Visual Studio 中可调试。该程序非常适合 Cygwin 和 MinGW 用户将 Linux 代码移植到 Windows。

http://www.affinic.com/?page_id=48

关于debugging - 关于如何编写调试格式转换工具的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com