2

perl を使用して C プログラム ファイル (.c 拡張子) を解析したいと考えています。サンプルのCプログラムに次のようなステートメントが含まれている可能性があるような方法で解析を実行したい

printf ("%d => Hello",x);

x をプログラム内の整数変数とします。したがって、上記の行を解析すると、x 値を取得する方法はありますか。1 行だけを解析して x の値を取得したいのですが、前の行を解析して x の値を取得することはできません。x の実際の値を動的に取得する方法はありますか、それともオブジェクト ファイルを解析する方がよいでしょうか。

4

2 に答える 2

11

printf ("%d => Hello",x); 線のみを使用して x の値を確実に見つけることができるツールは世界にありません。値は前の行に依存し、ソースコードにはまったくないユーザー入力に依存する可能性があります。

編集

一方、静的アナライザー、デバッガー、インタープリターなど、C コードで動作するツールはたくさんあります。これらのオプションの 1 つを探すことができます。

于 2012-05-07T04:51:54.257 に答える
7

いいえ、考えてみてください。

int x = rand();
printf("%d", x);

xプログラムを実行せずに、何が何であるかをどうやって知ることができますか?

于 2012-05-07T05:12:25.267 に答える