使用LLDB调试LLVM IR

4

我已经开发了一个LLVM前端,将某种源语言X生成的LLVM IR作为目标代码。如果我扩展这个前端以在生成的IR中嵌入调试信息,那么是否可以使用LLDB来调试我的源语言?我的意思是,lldb是否支持以LLVM IR为目标的任何源语言?

1个回答

3
您需要获得一个DWARF语言代码并让lldb识别它。如果我们获得一些未知语言的DWARF,我们将忽略它...
然后,没有更多的支持,一些东西能工作,其他东西则不能。
如果您发出正确的行表信息,应该可以将其映射回源文件,这也可以使步进工作正常。其他事情开始变得困难。
下一个困难的部分是如何告诉lldb有关您的类型信息。lldb在调试器中使用Clang的AST作为内部存储器来存储类型信息。lldb将DWARF类型信息转换为Clang AST,用于打印局部变量(使用frame variable命令)和与表达式解析器一起使用。
如果您的语言具有类似C的类型系统,则lldb应该能够解析您的类型的DWARF。您需要添加正确的变量信息,这样就可以使frame variable工作。
表达式解析器(即expression、print或po命令)要求lldb拥有您语言的解析器。这可能是一项相当大的工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接