Download Frama-C
Get Started

Trying out Frama-C analyzing
a simple C program

Browsing the analysis results with Frama-C

Interface Overview
Value Analysis
Effects Analysis
Dependency Analysis
Impact Analysis
01This command-line creates an analysis project for file first.c.
02Option -val runs the Evolved Value Analysis plug-in and prepares its results.
03Option -slevel 10 is one of several options that influence the precision of the value analysis.
 int S=0;
 int T[5];
 int main(void)
 {
   int i;
   int *p = &T[0] ;
   for (i=0; i<5; i++)
     { S = S+i; *p++ = S; }
   return S;
 }


  01This command-line creates an analysis project for file first.c.frama-c-gui -slevel 103 -val2 first.c102Option -val runs the Evolved Value Analysis plug-in and prepares its results.

01The Evolved Value Analysis (EVA) plug-in computes sets of possible values for every variable at each point of the program.
02When the execution reaches the highlighted point inside the loop, the variable S always contains either 0, 1, 3, or 6. Frama-C guarantees that it does not take any other values at that point.
  i = 0;
  while (i < 5) {
    {
      int *tmp;
      01The Evolved Value Analysis (EVA) plug-in computes sets of possible values for every variable at each point of the program.S1 += i;
    { /* sequence */
         tmp = p;
         p ++;
         *tmp = S;
       }
    }
    i++;
  }
  return S;
 }

 S  {0; 1; 3; 6}202When the execution reaches the highlighted point inside the loop, the variable S always contains either 0, 1, 3, or 6. Frama-C guarantees that it does not take any other values at that point.
 S (after)  {0; 1; 3; 6; 10}
01For each statement, Frama-C can provide an exhaustive list of the memory cells that may be modified by this statement during the execution, even if the statement uses pointers.
02Frama-C guarantees that anytime it is executed, the statement *tmp = S; does not change any memory location other than the cells of the array T.
  p = T;
  i = 0;
  while (i < 5) {
    {
      int *tmp;
      S += i;
       { /* sequence */
         tmp = p;
         p ++;
         01For each statement, Frama-C can provide an exhaustive list of the memory cells that may be modified by this statement during the execution, even if the statement uses pointers.*tmp = S;1
       }
    }
    i++;
  }
  return S;
 }
 
 *tmp = S; modifies T[0..4]02Frama-C guarantees that anytime it is executed, the statement *tmp = S; does not change any memory location other than the cells of the array T.2
01The dependencies plug-in highlights the statements that define the value of variable S at this point.
02The value contained in variable S at the statement *tmp = S; was defined by the statement S += i;
int main(void)
{
  int i;
  int *p;
  p = T;
  i = 0;
  while (i < 5) {
    {
      int *tmp;
      S += i;202The value contained in variable S at the statement *tmp = S; was defined by the statement S += i;
       { /* sequence */
         tmp = p;
         p ++;
         01The dependencies plug-in highlights the statements that define the value of variable S at this point.*tmp = S1;
       }
    }
    i++;
  }
  return S;
}
01This analysis highlights all the statements impacted by the selected statement.
02This statement has repercussions on the statements tmp = p; p++; *tmp = S;. It is guaranteed not to affect the statements S += i; and i ++;
int main(void)
{
  int i;
  int *p;
  01This analysis highlights all the statements impacted by the selected statement.p = T;1
  i = 0;
  while (i < 5) {
    {
      int *tmp;
      S += i;
       { /* sequence */
         tmp = p;
         p++;
         *tmp = S;202This statement has repercussions on the statements tmp = p; p++; *tmp = S;. It is guaranteed not to affect the statements S += i; and i ++;
       }
    }
    i++;
  }
  return S;
}

Frama-C Calendar

The first version of the Frama  C Plugins

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit...

Read More

Lorem Ipsum

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed...

of letters, as opposed to using of letters, as opposed to using

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed...

Read More

of letters, as opposed to using

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed...

frama-clang 0.0.3, compatible with Frama-C 15 is out.

Frama-Clang is a plugin that allows Frama-C to take as input C++ programs. As its name implies, it is based on the clang compiler, the C/C++/Objective-C front-end of the llvm platform. Changes Compatibility with Frama-C 15 Phosphorus Improved handling of constructors and...

Read More

The First Version Of the frama-clang plugin

The first version of the Frama-Clang plugin, an experimental C++ front-end for Frama-C, is available. The first version of the Frama-Clang plugin, an experimental C++ front-end for Frama-C, is available. Nulla quis lorem ut libero malesuada feugiat. Cras ultricies ligula sed magna...

Event 1

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit...

Read More

Lorem Ipsum

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed...

It is a long It is a long It is a long

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed...

Event 2

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit...

Read More

Get Frama-C

Frama-C is only available for Desktop

Discover more about Frama-C Download Frama-C
SECURE
SECURE