3

我正在开发 LLVM IR 的前端,并想附加调试信息。我已经使 %llvm.dbg.declare 有效,它可以在此声明之后跟踪我的变量。但是我不明白另一个 %llvm.dbg.value 的用途,谁能告诉我应该在什么情况下使用它?或任何例子?

4

1 回答 1

6

llvm.dbg.declare如果您在没有优化的情况下构建代码(您确实应该这样做)就足够了。在非优化代码中,局部变量存在于堆栈中(以allocas 为单位)并llvm.dbg.declare告诉调试器在哪里找到它们

当尝试调试优化代码时,事情变得更加模糊,因为局部变量可以在寄存器中,并且调试器没有实际的“内存位置”可以检查以始终知道局部变量的值。这就是llvm.dbg.value进来的地方——它可以显式地通知调试器本地已经改变,以及它的新值。

于 2013-05-07T13:39:55.923 回答