CBMC
What it is
CBMC is free software for checking C and C++ programs through bounded model checking. It explores possible execution paths and evaluates assertions, with checks for array bounds, pointer safety, exceptions, user-defined assertions, and some undefined behavior, including signed integer overflow. The analysis unwinds loops before sending the resulting equation to a decision procedure, and may require limiting input size. The repository lists support for C89, C99, most of C11, C17, C23, many GCC and Visual Studio extensions, and SystemC through Scoot; listed input languages also include Java bytecode. CBMC supports contracts and can produce counterexamples. Its incremental SMT2 backend can use an SMT-LIB 2.6-compliant solver, with Z3 and CVC5 as examples. It runs on Linux, macOS, Windows, or self-hosted deployments. Available distribution routes include Homebrew instructions, Ubuntu DEB packages, Windows MSI installers, and Docker images. goto-cc can substitute for gcc or cl.exe in Makefiles to gather project models. The software is licensed under the 4-clause BSD license.
For and against
For
- Checks array bounds, pointer safety, exceptions, and assertions
- Can produce counterexamples
- Supports multiple C standards and SystemC
- Available for Linux, macOS, and Windows
- Free under a 4-clause BSD license
Against
- Analysis may require limiting input size
- Loop unwinding makes verification bounded
- Develop versions are not recommended for production use
The verdict
CBMC provides a range of program checks and integration options for bounded verification. Its input-size constraints and loop unwinding are important considerations when deciding whether it fits a verification task.
Who it suits
CBMC suits developers verifying C or C++ projects who can work with bounded analysis and want to integrate checks into development or continuous integration. Its listed language support also covers Java bytecode and SystemC.
Plans and prices
CBMC
4-clause BSD licensed open-source software
Read 4 Oct 2026 · github.com
On the record
- Bounded analysis
- CBMC may require restricting inputs to a bounded size, and its verification unwinds loops before passing the resulting equation to a decision procedure.diffblue.github.io · read 4 Oct 2026
- Build integration
- goto-cc can replace gcc or cl.exe in Makefiles to collect project models for verification.diffblue.github.io · read 4 Oct 2026
- Continuous integration
- The user guide describes using CBMC as part of routine software development and continuous integration.diffblue.github.io · read 4 Oct 2026
- Distribution
- The release page provides macOS Homebrew instructions, Ubuntu DEB packages, Windows MSI installers, and Docker container images.github.com · read 4 Oct 2026
- Language support
- The repository states support for C89, C99, most of C11, C17, C23, many GCC and Visual Studio extensions, and SystemC using Scoot.github.com · read 4 Oct 2026
- License
- The repository identifies CBMC as licensed under the 4-clause BSD license.github.com · read 4 Oct 2026
- Purpose
- CBMC is a bounded model checker for C and C++ programs that explores possible execution paths and checks assertions.diffblue.github.io · read 4 Oct 2026
- Related tools
- The user guide names CBMC Viewer and CBMC Starter Kit as third-party tools for summarizing findings and adding verification to a project.diffblue.github.io · read 4 Oct 2026
- Release guidance
- The repository says released versions are tested and intended for production use, while develop versions are not recommended for production use.github.com · read 4 Oct 2026
- Safety checks
- It can check array bounds, pointer safety, exceptions, user-specified assertions, and some undefined behavior such as signed integer overflow.github.com · read 4 Oct 2026
- Solver support
- CBMC supports an incremental SMT2 backend that can use an SMT-LIB 2.6 compliant solver, with examples for Z3 and CVC5.diffblue.github.io · read 4 Oct 2026
- Support
- The repository asks users encountering problems to file a bug report as a GitHub issue.github.com · read 4 Oct 2026