
Summary
CBMC is a bounded model checker for C and C++ programs, available for Linux, macOS, and Windows. It checks memory safety, including array bounds and pointer use, along with several forms of undefined behavior and user-written assertions. CBMC verifies by unwinding program loops and passing the resulting equation to a decision procedure. It supports C89, C99, most of C11 and C17, and extensions from GCC, Clang, and Visual Studio. Its supported features include dynamic memory, multidimensional and dynamically sized arrays, nondeterminism, assumptions, assertions, and selected C++ features such as classes, templates, and STL containers. It can check I/O equivalence between C or C++ and languages such as Verilog, and generate tests for branch, decision, path, and MC/DC coverage. A MiniSat-based bit-vector solver is included; Boolector, CVC5, and Z3 are supported but must be installed separately. The software is free under a BSD 4-clause license. Windows and macOS versions are command-line tools without a graphical interface.
Who it is for
CBMC suits developers and verification practitioners working with C or C++ who need checks for memory safety, undefined behavior, or assertions. It is also relevant for users generating coverage-oriented test cases.
What is good
- Checks memory safety and undefined behavior.
- Supports several C standards and compiler extensions.
- Can generate tests for multiple coverage criteria.
- Free under a BSD 4-clause license.
What to know first
- Windows and macOS releases have no GUI.
- External solvers must be installed separately.
- Windows version runs from Visual Studio Command Prompt.
Verdict
CBMC offers program checking and test generation through a command-line workflow. Users on Windows or macOS should be comfortable without a graphical interface, and external solver use requires separate installation.
CBMC plans and pricing
All plansCompared on c and c++ static analysis tools
- Free plan
- Yescprover.org
- Memory defect detection
- Yescprover.org
Facts
- Purpose
- CBMC is a bounded model checker for C and C++ programs.cprover.org · 1 Oct 2026
- Language support
- CBMC supports C89, C99, most C11/C17 and compiler extensions from GCC, Clang and Visual Studio.cprover.org · 1 Oct 2026
- Memory safety
- CBMC verifies memory safety, including array bounds and safe pointer use.cprover.org · 1 Oct 2026
- Undefined behavior
- CBMC checks various forms of undefined behavior and user-specified assertions.cprover.org · 1 Oct 2026
- Verification method
- CBMC unwinds program loops and passes the resulting equation to a decision procedure.cprover.org · 1 Oct 2026
- Cross-language checking
- CBMC can check C and C++ for I/O equivalence with languages such as Verilog.cprover.org · 1 Oct 2026
- Solvers
- CBMC includes a MiniSat-based bit-vector solver and supports external Boolector, CVC5 and Z3 solvers.cprover.org · 1 Oct 2026
- C features
- Supported C features include multidimensional and dynamically sized arrays, pointer checks, dynamic memory, nondeterminism, assumptions and assertions.cprover.org · 1 Oct 2026
- Windows limitation
- The Windows download is an x64 command-line binary with no GUI and is run from the Visual Studio Command Prompt.cprover.org · 1 Oct 2026
- macOS limitation
- The macOS distribution is command-line only and has no GUI.cprover.org · 1 Oct 2026
- Linux packaging
- CBMC is packaged for Debian and Ubuntu and can also be installed with Fedora's dnf package manager.cprover.org · 1 Oct 2026
- License
- CBMC is released under a BSD 4-clause license.cprover.org · 1 Oct 2026
- Support
- The project directs CBMC questions to Daniel Kroening and provides a CProver Support Google Group.cprover.org · 1 Oct 2026
- Supported languages
- It supports C89, C99, most of C11/C17, and many compiler extensions from GCC, Clang, and Visual Studio.cprover.org · 2 Oct 2026
- Verification
- It checks memory safety, several kinds of undefined behavior, user assertions, and C/C++ I/O equivalence with other languages such as Verilog.cprover.org · 2 Oct 2026
- Analysis method
- Verification unwinds program loops and passes the resulting equation to a decision procedure.cprover.org · 2 Oct 2026
- Solver support
- CBMC includes a MiniSat-based bit-vector solver and supports external SMT solvers including Boolector, CVC5, and Z3, which must be installed separately.cprover.org · 2 Oct 2026
- Language features
- The supported features page lists C arrays, pointers, dynamic memory, assertions, and C++ classes, templates, and selected STL containers.cprover.org · 2 Oct 2026
- Test generation
- CBMC can generate test cases for coverage criteria including branch, decision, path, and MC/DC.cprover.org · 2 Oct 2026
- Platforms
- The maker lists Linux, Windows, and macOS availability and provides Linux packages for Debian, Ubuntu, and Fedora.cprover.org · 2 Oct 2026
- Interface
- The maker describes the Windows and macOS releases as command-line tools with no GUI.cprover.org · 2 Oct 2026
- License terms
- The license provides the software “AS IS” and disclaims warranties and liability.cprover.org · 2 Oct 2026
Best CBMC alternatives
See all 12Where it ranks on Everything Xiaomi
Is CBMC yours?
Claim it for free: prove the domain, then correct facts, plans and screenshots. An editor reviews every change.
Sources
- cprover.org/cbmc/· checked 1 Oct 2026
- cprover.org/cbmc/language_features.html· checked 1 Oct 2026
- cprover.org/cprover-manual/test-suite/· checked 2 Oct 2026
- cprover.org/cbmc/LICENSE.txt· checked 2 Oct 2026


