使用LLDB调试LLVM IR

时间:2014-08-18 07:24:09

标签: llvm lldb

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

1 个答案:

答案 0 :(得分:3)

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

然后在没有更多支持的情况下,有些东西会起作用,有些东西会胜利。

如果您发出正确的行表信息,您应该能够映射回您的源代码,并且这也应该是步进工作。其他事情开始变得艰难。

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

如果您的语言类型系统看起来有点类似C lldb应该能够为您的类型解析DWARF。您加上正确的变量信息应该frame variable正常工作。

表达式解析器(即expressionprintpo命令)要求lldb为您的语言提供解析器。这可能是一大笔工作。