我正在尝试使用 frama-c 值分析器来评估实际上是线程化的 C 代码。我想忽略任何可能发生的线程问题,只检查单个线程的可能值。到目前为止,这是通过将入口点设置为线程开始的位置来实现的。
现在我的问题是:在一个线程中,我读取由另一个线程写入的值,因为 frama-c 不(也不应该?)考虑线程(当前)它假设我的变量在某个广泛的范围内,但我知道范围实际上要小得多。是否可以告诉值分析器这个变量的值范围?
例子:
volatile int x = 0;
void f() {
while(x==0)
sleep(100);
...
}
这里 frama-c 检测到 x 是易失的,因此具有范围 [--..--],但我知道另一个线程将写入 x 的内容,我想告诉分析器 x 只能是 0 或 1。这对frama-c是否可行,尤其是在gui中?
在此先感谢基督教