Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发 LLVM IR 的前端,并想附加调试信息。我已经使 %llvm.dbg.declare 有效,它可以在此声明之后跟踪我的变量。但是我不明白另一个 %llvm.dbg.value 的用途,谁能告诉我应该在什么情况下使用它?或任何例子?
llvm.dbg.declare如果您在没有优化的情况下构建代码(您确实应该这样做)就足够了。在非优化代码中,局部变量存在于堆栈中(以allocas 为单位)并llvm.dbg.declare告诉调试器在哪里找到它们
llvm.dbg.declare
alloca
当尝试调试优化代码时,事情变得更加模糊,因为局部变量可以在寄存器中,并且调试器没有实际的“内存位置”可以检查以始终知道局部变量的值。这就是llvm.dbg.value进来的地方——它可以显式地通知调试器本地已经改变,以及它的新值。
llvm.dbg.value