The C Bounded Model Checker (CBMC) demonstrates the violation of assertions in C programs, or proves safety of the assertions under a given bound. CBMC implements a bit-precise translation of an input C program, annotated with assertions and with loops unrolled to a given depth, into a formula. If the formula is satisfiable, then an execution leading to a violated assertion exists. CBMC is one of the most successful software verification tools. Its main advantages are its precision, robustness and simplicity. CBMC is shipped as part of several Linux distributions. It has been used by thousands of software developers to verify real-world software, such as the Linux kernel, and powers commercial software analysis and test generation tools. Table 1 gives an overview of CBMC's features. CBMC is also a versatile tool that can be applied to solve many practical program analysis problems such as bug finding, property checking, test input generation, detection of security vulnerabilities, equivalence checking and program synthesis. This chapter will give an introduction into CBMC, including practical examples and pointers to further reading. Moreover, we give insights about the development of CBMC itself, showing how its performance evolved over the last decade.
翻译:CBMC(CBMC) 显示违反C程序中的断言,或证明在特定约束下断言的安全性。 CBMC 将输入C程序、附加声明和向给定深度的环状转换成公式。如果公式是可引用的,那么就会有一个执行导致被违反的断言。 CBMC是最成功的软件核查工具之一。其主要优点是其精确性、稳健性和简洁性。 CBMC 被作为Linux 发行品的一部分发货。它已被数千名软件开发商用来核查真实世界软件,例如Linux 内核,并授权商业软件分析和测试生成工具。表1 概述了CBMC的特征。 CBMC 也是可用于解决许多实际方案分析问题的多功能工具,例如错误发现、财产检查、测试输入生成、安全脆弱性检测、等值检查和方案合成。本章将介绍CBMC, 包括实际实例和指针,供进一步阅读。此外,我们展示CBBRC十年的演变情况。