私は現在のステートメントの値を取得するFrama-C-Pluginを開発したいと思います。Frama-C:ステートメントの値を取得する
Frama-C Plugin development: Getting result of value-analysis私はステートメントの値を印刷することができましたが、必要な方法でポインタが表示されませんでした。
コメントの助けを借りて、私は状態全体(文の変数だけでなく)を印刷することができました。
私はこれらの2つを組み合わせることができます:ステートメントの変数を取得するだけでなく、逆参照されたポインタ(値)も取得できますか?
ポインタを印刷中に0が変数のオフセットが、私がしたいされているため、例えば、x -> {{ NULL -> {1} }}
に文の後x=1
結果を非ポインタを印刷し、* X = 3のようなステートメントの後、x -> {{ y -> {0} }}
になり例3のポインタが指している値を取得します。 私がそれを望む方法は、そのようなものを得ることです:x -> 3
。
タプルを(String varname, int value)
にすると、印刷することができます。
「ポインタが正しく表示されませんでした」とはどういう意味ですか?たぶんあなたはあなたが得るものとあなたが見たいものの例を追加するためにあなたの質問を編集する必要があります。 – Anne
あなたが得たいのは、 '(* x)'の値ではなく、 '(x)'の値です。変数がポインタであるかどうかを知るために、その型( 'Cil.isPointerType vi.vtype')をテストして、左辺' * x'を構築しなければなりません( 'Lval(Mem ...、 NoOffset) ')、それを使ってその値を求めます。 – Anne
...の部分とは何ですか?単にvarinfoフィールド? varinfoからオフセットを取得するにはどうすればよいですか?ポインタを参照解除するときに、これが必要になります(または、あなたが言うことを得られませんでした)? –