dbgメタデータを使用して変数定義の行番号などを取得する方法に従いましたか?ローカル変数(アロカ)の行番号定義を取得するために、これは正常に機能します。しかし、グローバルについても同じことが必要です。そこで、 http://llvm.org/docs/doxygen/html/DbgInfoPrinter_8cpp_source.html#l00062findDbgGlobalDeclare()
からメソッドをハックしようとしました。ただし、バイトコードに何も含まれていないため、抽出するdbg情報がありません。を使用してターゲットコードをコンパイルします。私のバイトコードからのいくつかのサンプル:llvm.dbg.gv
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]
!0
間接的に依存していて、があります!llvm.dbg.cu = !{!0}
。
ありがとうございました !