3

現在、シンボリック実行 (SE) と到達可能性分析 (RA) について混乱しています。私が知っているように、SEはシンボルを使用してコードを実行し、分岐条件で各分岐に到達します。また、RA を使用して、各ブランチの到達可能性を見つけることができますよね? RA を使用すると、分岐ごとに分岐条件を抽出できます。もしそうなら、それらの違いは何ですか?彼らは迅速にできますか?それらはすべて静的分析ですか?

ありがとう、イブ

4

3 に答える 3

0

到達可能性分析は、主にモデルが特定の状態に到達できるかどうかを確認するために使用されます。ただし、シンボリック実行は、プログラム/ソースコード内のすべてのパスを見つけるための静的分析手法です (KLEE のように動的な場合もあります)。

于 2016-06-23T15:44:21.990 に答える
0

シンボリック実行は、プログラムを実行せずに行われます。したがって、これは静的分析です。

適切なシンボリック解析により、各プログラム ポイントのパス条件が計算されます。より優れた人は、パスの式について推論し、それが実現可能か (プログラム ポイントに到達可能)、そうでないか (プログラム ポイントが無効) を示すことができます。

コンパイルされたコードの実行速度と比較すると、シンボリック実行はかなり遅くなる傾向があります。

于 2015-12-18T13:11:31.217 に答える
-1

シンボリック実行は静的ではなく、プログラムをシンボリックに実行します。パフォーマンスの問題として、klee のようなシンボリック実行ツールは、分岐に遭遇したときに分岐条件を解決しません。安価な分析を使用して、到達可能かどうかを確認します。プログラムの終了に到達すると、テスト ケースを生成しようとします。開始点 (メイン関数) から出口までの収集された制約が満たされる場合、テスト ケースが与えられます。それ以外の場合、出口には到達できません。SE は到達可能性分析を使用して、コードをカバーするテスト ケースを生成します。

于 2015-12-18T12:55:52.123 に答える