【问题标题】:debugging LLVM IR with LLDB使用 LLDB 调试 LLVM IR
【发布时间】:2014-10-11 01:30:29
【问题描述】:

我开发了一个 LLVM 前端,生成 LLVM IR 作为来自某些源语言 X 的目标代码。如果我扩展这个前端以在生成的 IR 中嵌入调试信息,是否可以使用 LLDB 进行调试我的源语言?我的意思是 lldb 是否支持针对 LLVM IR 的 any 源语言?

【问题讨论】:

    标签: llvm lldb


    【解决方案1】:

    您必须获得一个 DWARF 语言代码并让 lldb 识别它。如果我们得到一些未知语言的 DWARF,我们会忽略它...

    如果没有更多的支持,有些事情会奏效,有些则不会。

    如果您发出正确的线表信息,您应该能够映射回您的源,这应该也可以让步进工作。其他事情开始变得艰难。

    下一个困难的部分是你将如何告诉 lldb 你的类型信息。 lldb 使用 Clang 的 AST 作为调试器中类型信息的内部存储。 lldb 将 DWARF 类型信息转换为 Clang AST,用于打印局部变量(使用 frame variable 命令)和用于表达式解析器。

    如果你的语言有一个看起来有点像 C 的类型系统,那么 lldb 应该能够为你的类型解析 DWARF。你会加上正确的变量信息应该让frame variable工作。

    表达式解析器(即expressionprintpo 命令)要求 lldb 具有适用于您的语言的解析器。这可能是相当大的工作量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2018-06-07
      • 1970-01-01
      相关资源
      最近更新 更多