我遵循如何使用 dbg 元数据获取变量定义行号等?为了获得局部变量(allocas)的行号定义,它工作正常。但我需要同样的全局变量。所以我试图破解findDbgGlobalDeclare()
来自http://llvm.org/docs/doxygen/html/DbgInfoPrinter_8cpp_source.html#l00062的方法。但是,我llvm.dbg.gv
的字节码中没有,因此没有要提取的 dbg 信息。我使用clang++ -O0 -g -emit-llvm Test.cpp -c -o Test.bc
. 我的字节码中的一些示例:
@r = global i32 3, align 4
%4 = load i32* @r, align 4, !dbg !942
...
%a = alloca i32, align 4
%1 = load i32* %a, align 4, !dbg !939
但是,我确实有:
!924 = metadata !{i32 786484, i32 0, null, metadata !"r", metadata !"r", metadata !"", metadata !841, i32 19, metadata !56, i32 0, i32 1, i32* @r} ; [ DW_TAG_variable ] [r] [line 19] [def]
with!0
是间接依赖的,并且存在!llvm.dbg.cu = !{!0}
。
谢谢 !