FREEDOM251

Freedom251 › C and C++ Static Analysis Tools

CBMC

Free plan LinuxMacWindows

Visit CBMC Alternatives Pricing

CBMC's own site

What CBMC is

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-specified assertions. Verification works by unwinding program loops and passing the resulting equation to a decision procedure. CBMC supports C89, C99, most of C11 and C17, and compiler extensions from GCC, Clang, and Visual Studio. Its supported features include multidimensional and dynamically sized arrays, dynamic memory, nondeterminism, assumptions, and assertions; listed C++ support includes classes, templates, and selected 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. CBMC is free under a BSD 4-clause license. The Windows and macOS distributions are command-line tools with no graphical interface.

Who it suits

CBMC suits developers and verification users checking C or C++ programs for memory issues, undefined behavior, or assertions. It is also relevant to users generating coverage-focused tests or checking I/O equivalence with languages such as Verilog.

What it does well

  • Checks array bounds and safe pointer use.
  • Supports C89, C99, and most C11/C17.
  • Can generate tests for four coverage criteria.
  • Free under a BSD 4-clause license.

What to know first

  • Windows and macOS releases have no GUI.
  • External Boolector, CVC5, and Z3 solvers require separate installation.
  • Windows release runs from Visual Studio Command Prompt.

Plans

PlanBilled and limitsPrice
CBMCBSD 4-clause license · command-line toolFree

As cprover.org lists them, read 2 Oct 2026. The maker's own page has the final word.

Getting started

  1. Open the CBMC website.
  2. Choose the distribution for Linux, macOS, or Windows.
  3. On Windows, run the x64 command-line binary from the Visual Studio Command Prompt.
  4. On Linux, install through Debian or Ubuntu packaging, or Fedora's dnf package manager.
  5. Install Boolector, CVC5, or Z3 separately if you want to use an external solver.

CBMC is a bounded model checker for C and C++ that verifies program properties and can generate tests. It suits developers who need checks such as memory-safety verification or assertion checking in a command-line workflow. Its free license and broad C support are compelling, but loop unwinding and separately installed external solvers are important practical constraints.

Overview

CBMC analyzes bounded program behavior by unwinding loops and passing the resulting equation to a decision procedure. That gives C and C++ developers a way to check specified properties, including memory safety, undefined behavior and user assertions. The method is bounded: users should choose it for this style of analysis, rather than assume it proves properties across unbounded execution.

It can also check I/O equivalence between C or C++ and languages such as Verilog. That makes it relevant to work involving software and hardware interfaces, though the tool remains a command-line checker rather than a graphical review environment.

Key features

  • Memory and behavior checks: CBMC checks array bounds, pointer use, several forms of undefined behavior and user-specified assertions. These checks target concrete classes of defects, making the tool useful when those properties matter more than a general-purpose developer interface.
  • C and C++ support: It supports C89, C99, most of C11 and C17, and many GCC, Clang and Visual Studio extensions. Supported features include multidimensional and dynamically sized arrays, dynamic memory, nondeterminism, assumptions and assertions; C++ support includes classes, templates and selected STL containers. This breadth helps with varied codebases, but does not mean every language feature is covered.
  • Solver choices: A MiniSat-based bit-vector solver is included, so users can begin without configuring an external solver. Boolector, CVC5 and Z3 are also supported, but must be installed separately.
  • Test generation: CBMC can generate tests for branch, decision, path and MC/DC coverage. This extends its usefulness beyond checking properties when coverage-oriented test cases are also needed.

Pricing

CBMC costs nothing under a BSD 4-clause license, with the command-line tool included. There is no free trial because the software is free. The license provides the software “AS IS” and disclaims warranties and liability, so organizations should account for those terms when deciding whether it fits their requirements.

Platforms

CBMC supports Linux, macOS and Windows. Debian and Ubuntu package it, and Fedora users can install it with dnf. The Windows release is an x64 command-line binary run from the Visual Studio Command Prompt; macOS is also command-line only. Users seeking a GUI should look elsewhere on either platform.

Who it's for

CBMC is best suited to C and C++ developers who want bounded checks for memory safety, undefined behavior or assertions, and to teams that need coverage-based test generation or C/C++ I/O equivalence checks with languages such as Verilog. It is a weaker fit for users who require a graphical interface, broad language coverage beyond its supported C and C++ features, or external solver integration without separate installation.

Pros and cons

  • Pro: The included MiniSat-based solver and free BSD-licensed tool provide a usable starting point without buying a plan.
  • Pro: Checks for memory safety, undefined behavior and assertions address specific correctness risks in C and C++ programs.
  • Pro: Test generation for several coverage criteria and cross-language I/O equivalence add uses beyond defect checking alone.
  • Con: Verification relies on loop unwinding, so CBMC is a bounded checker, not a universal guarantee about all executions.
  • Con: External solvers require separate installation, and Windows and macOS users get no GUI.

Alternatives

For a broader comparison, see C and C++ Static Analysis Tools. Consider Infer instead if you want free static analysis with Linux, macOS, self-hosted and web platform options. MATLAB Grader may fit better when MATLAB-based grading is the goal; its free plan requires a MATLAB license current under maintenance, and LMS integration requires a qualifying academic license.

Qodana is another option if a freemium tool with a free trial and API, web and self-hosted platform options is a better match. Semgrep Code may suit teams seeking code and supply-chain coverage; its Free Edition is capped at 10 repositories, 10 contributors and 60 AI credits.

Choose Clang Static Analyzer for an open-source analyzer covering C, C++ and Objective-C. Flawfinder is a free GPL-2.0+ alternative. Parasoft SOAtest offers tailored pricing based on business needs. CodeChecker is another free option.

Verdict

Choose CBMC if you need free, bounded verification and test generation for C and C++ and are comfortable working at the command line. Its focused checks and included solver make it a practical option for code where memory safety, assertions or coverage matter. Look elsewhere if you need a GUI or want external solvers to work without installing them separately.

Verdict

CBMC provides program checks and test generation as a free command-line tool. Users who need external solvers must install them separately, and Windows and macOS users should expect no graphical interface.

Questions

How much does CBMC cost?

CBMC is free. Its listed plan is free.

Which operating systems does CBMC support?

CBMC is available for Linux, macOS, and Windows.

Does CBMC have a graphical interface?

The Windows and macOS releases are command-line tools with no GUI.

Which programming languages does CBMC support?

It supports C89, C99, most of C11 and C17, and many extensions from GCC, Clang, and Visual Studio. Supported C++ features include classes, templates, and selected STL containers.

Is CBMC open source?

CBMC is released under a BSD 4-clause license.

Which solvers can CBMC use?

It includes a MiniSat-based bit-vector solver and supports Boolector, CVC5, and Z3. The external solvers must be installed separately.

Facts from CBMC's own pages

Analysis method
Verification unwinds program loops and passes the resulting equation to a decision procedure. · cprover.org, 2 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
Cross-language checking
CBMC can check C and C++ for I/O equivalence with languages such as Verilog. · cprover.org, 1 Oct 2026
Interface
The maker describes the Windows and macOS releases as command-line tools with no GUI. · 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
Language support
CBMC supports C89, C99, most C11/C17 and compiler extensions from GCC, Clang and Visual Studio. · cprover.org, 1 Oct 2026
License
The maker identifies the license as BSD 4-clause; its terms permit redistribution and use in source or binary form subject to conditions. · cprover.org, 2 Oct 2026
License terms
The license provides the software “AS IS” and disclaims warranties and liability. · cprover.org, 2 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
macOS limitation
The macOS distribution is command-line only and has no GUI. · cprover.org, 1 Oct 2026
Memory safety
CBMC verifies memory safety, including array bounds and safe pointer use. · cprover.org, 1 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
Purpose
CBMC is a bounded model checker for C and C++ programs. · cprover.org, 2 Oct 2026
Solvers
CBMC includes a MiniSat-based bit-vector solver and supports external Boolector, CVC5 and Z3 solvers. · cprover.org, 1 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
Support
The CBMC page directs questions to Daniel Kroening, and the CPROVER manual links to Google Groups support and announcements. · cprover.org, 2 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
Test generation
CBMC can generate test cases for coverage criteria including branch, decision, path, and MC/DC. · cprover.org, 2 Oct 2026
Undefined behavior
CBMC checks various forms of undefined behavior and user-specified assertions. · cprover.org, 1 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
Verification method
CBMC unwinds program loops and passes the resulting equation to a decision procedure. · 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

Where CBMC stands on Freedom251

Look at these too