1

我有一个 GlobalValue,我想为其查找 DILocation。我可以看到元数据存在,但找不到明显的查找路径来获取它。对 llvm::Instruction 做同样的事情很容易,但这并不明显。

4

1 回答 1

1

最简单的做法是创建一个 DIGlobalVariable(或获取 DIGlobalVariable)并询问它的文件、行、列等是什么。您将通过迭代编译单元中的全局变量来找到全局变量。

不同之处在于:一条指令有一个位置,因为我们要从中建立一个行表,并且它可以移动,所以我们最终会在生成代码时访问它、复制它等等。全局变量不需要指向它的调试信息,因为我们使用该信息的唯一时间是在我们创建调试信息并且元数据指向变量本身的时候。

于 2015-04-18T13:12:58.130 回答