[英]Slicing using frama-c
我正在使用frama-c來做一些關於程序切片的實驗。 該工具很棒,並且有很多不同類型的切片(例如,按結果或按語句)。 我正在使用程序數據結構,如:
typedef struct ComplexData {
int x;
int y;
char string_[100];
size_t n;
} ComplexData;
這只是一個示例,用於了解frama-c如何根據函數產生的結果對程序進行切片。 基本上, main方法調用一個函數,該函數返回一個ComplexData類型的值。 不同執行之間的比較是如何進行的? 對結構的每個值進行檢查? 像這樣?
Frama-C 的選項-slice-return f
指示切片器保留所有有助於計算f
返回碼的語句。 對於您的類型ComplexData
,這意味着任何字段的內容。 任何計算例如y
或string_
的字符的string_
都將被保留。
關於不同執行之間的比較,靜態切片器的實際工作方式不同。 它們在所有可能的執行中近似每個函數的行為。 (在 Frama-C 的情況下,這是使用一種稱為抽象解釋的技術來完成的。)因此,無需比較兩次執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.