简体   繁体   English

Frama-C EVA插件中“后”列的含义和目的是什么?

[英]What is the meaning and purpose of “after” column in Frama-C EVA plugin

In the EVA tutorial , I found this screenshot: EVA教程中 ,我找到了这个截图: EVA教程屏幕截图 with an explanation:" The exact value that caused this is shown in column c5: -1. The C standard considers the left-shift of a negative number as undefined behavior. Because -1 is the only possible value in this callstack, the reduction caused by the alarm leads to a post-state that is ." 解释:“导致这一点的确切值显示在第c5列:-1。C标准将负数的左移视为未定义的行为。因为-1是此callstack中唯一可能的值,所以减少由警报引起的后状态就是这样。“

So, I want to ask: 所以,我想问:

What is the meaning and purpose of "after" column in Frama-C EVA plugin? Frama-C EVA插件中“后”栏的含义和目的是什么?

Is there any more detailed document to understand the term "reduction" and "post-state" used in EVA? 有没有更详细的文件来理解EVA中使用的术语“减少”和“后状态”?

When you select a statement s in the GUI, there are two memory states that are relevant: the one before s (also called pre-state), and the one after the side-effects of s have been done (also called post-state). 当您选择一个声明s在GUI中,但是也有一些相关的两个内存状态:一个前s (也称为前的状态),和副作用后,一个s已经完成(也称为后状态)。 This is why you have two columns in the Values tab for each lval you're interested in. The notion of pre and post-state is quite standard in program verification and basically dates back to Hoare Logic . 这就是为什么你在感兴趣的每个lval的Values选项卡中都有两列。在程序验证中,pre和post-state的概念非常标准,并且基本上可以追溯到Hoare Logic

The term "reduction" refers to the fact that after having emitting an alarm, EVA will attempt to remove from its abstract state the elements that correspond to concrete states that would definitely lead to undefined behavior. 术语“减少”指的是在发出警报之后,EVA将试图从其抽象状态中移除对应于肯定会导致未定义行为的具体状态的元素。 Indeed, the abstract state is supposed to be an over-approximation of all concrete states that can reach the statement without having triggered an undefined behavior beforehand : if something failed before s , there's no point in speculating what could happen when evaluating s . 实际上,抽象状态应该是所有具体状态的过度近似,这些状态可以在没有预先触发未定义行为的情况下到达语句:如果某些事情在s之前失败,那么在推测在评估s时会发生什么是没有意义s In the example you refer to, we have the particular case where all possible concrete states would lead to an error. 在您所参考的示例中,我们有特定情况,其中所有可能的具体状态都会导致错误。 Hence, we end up with the BOTTOM abstract state, representing an empty set of concrete states, and the analysis of this branch ends. 因此,我们最终得到了BOTTOM抽象状态,表示一组空的具体状态,并且对该分支的分析结束。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM