在LLVM IR中查找全局值的位置?

在LLVM IR中查找全局值的位置?,llvm,llvm-ir,llvm-c++-api,Llvm,Llvm Ir,Llvm C++ Api,我有一个全局值,我想找到它的位置。我可以看到元数据存在,但找不到明显的查找路径。对llvm::指令执行同样的操作很容易,但这并不明显。最简单的方法是创建一个DIGlobalVariable(或抓取DIGlobalVariable),并询问它的文件、行、列等是什么。您将通过迭代编译单元中的全局变量来找到全局变量 不同之处在于:一条指令有一个位置,因为我们要从它建立一个行表,它可以移动,所以我们最终会访问它,复制它,等等,就像我们生成代码一样。全局变量不需要指向它的调试信息,因为我们使用这些信息的唯

我有一个全局值,我想找到它的位置。我可以看到元数据存在,但找不到明显的查找路径。对llvm::指令执行同样的操作很容易,但这并不明显。

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


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

看起来DIGlobalVariable没有访问列的权限?目前没有,我想我们大多数人都没有注意到,因为我们没有发现任何东西我知道你用过它。该接口将为您提供文件、行、范围等。