dot*_*141 13 c compiler-construction llvm debug-symbols rust
我目前正在玩一个用Rust编写的简单LLVM前端.我现在正在尝试发出调试信息.
如何通过C绑定发出此调试信息(源位置和变量)?它甚至可能吗?我需要编写C++包装器吗?
似乎有一个插入源位置的函数(LLVMSetCurrentDebugLocation; LLVM ; Rust),但我不知道如何构造LLVMValue包含此信息的正确.我想它需要某种元数据.
有关从 C++ LLVM 调试信息 API 到 C 绑定的映射,请参阅DebugInfo.h 。您需要的示例包括:
(使用这些函数为您的编译器设置 dwarf 上下文)
您提到的 LLVMSetCurrentDebugLocation() 函数相当于 IRBuilder<>::SetCurrentDebugLocation()
对于每个调试表达式,您需要一个调试位置以及该表达式的 DWARF 元数据。其完成方式如下(C++ 片段):
auto loc_glc = DebugLoc::get( line, column, dwFunc );
m_dwBuilder->insertDeclare( r, dwVar_gr, m_dwBuilder->createExpression(), loc_glc, fooBB );
m_builder.SetCurrentDebugLocation( loc_glc );
Run Code Online (Sandbox Code Playgroud)
您需要将调试位置与 DWARF 表达式相关联,然后使用 LLVMSetCurrentDebugLocation() 将其“锚定”到您的 IRBuilder。