covdbg 1.4.0: shared library coverage and sign-in for one team

covdbg 1.4.0 is available. It measures code that lives in shared libraries, the DLLs your tests link against or load at run time, and it makes signing in clearer: a sign-in is now for one team, and covdbg tells you which.

In this release: Shared library coverage · Sign in for one team · Upgrading

Measure the DLLs your tests load

Until now covdbg measured the executable it launched, and nothing else. A lot of Windows code does not live there: the library your unit tests link against, a plugin loaded with LoadLibrary, a Python extension module. That code ran during your tests, but it never showed up in the report.

In 1.4.0 you select the libraries to measure under modules in .covdbg.yaml, with the same patterns you already use for files:

coverage:
  default:
    files:
      include:
        - "src/**/*.cpp"
    modules:
      include:
        - "mylib*.dll"                # By file name, in any directory
        - "build/**/plugins/*.dll"    # By path, relative to the config file
      exclude:
        - "mylib-thirdparty.dll"

covdbg instruments a selected library as soon as Windows maps it, before any of its code runs, including DllMain. That works for DLLs the executable imports and for DLLs loaded later with LoadLibrary. A library that is unloaded before the process exits keeps the coverage it collected, and each library is written to the coverage database as a module of its own, next to the executable.

A few details worth knowing:

  • Libraries are opt-in. Without modules.include, covdbg measures only the executable, exactly as before.
  • files still decides what is measured. A selected library contributes only functions whose source files pass your files patterns, so include its sources too.
  • Test hosts work. When the executable has nothing of its own to measure, such as a test host or python.exe, covdbg runs it unmeasured and measures the libraries. A run that measures nothing at all fails with "Nothing was measured".
  • Unloaded libraries can still be reported. List a DLL under baseline to see it at 0% when no test loads it. When a run does load it, its hits are merged into the same module.
  • It works with the rest of covdbg. Target-specific extend and override apply to modules, and with follow_children the selection covers every followed process. AI agents connected through covdbg mcp find a new libraries topic in the built-in guide.

Read the shared library documentation.

Sign in for one team

If you belong to more than one team, it was not always obvious which one a run counted against. In 1.4.0 a sign-in is for one team. covdbg login ends with a step in the browser where you choose it, or you name it up front:

covdbg login --team northwind-robotics
covdbg login --team personal

covdbg confirms the choice with Signed in as <email> for <team>. To switch teams, sign in again for the other one.

covdbg whoami now asks the service who the machine is signed in as, and for which team. If the service cannot be reached, it shows the stored sign-in and says that it could not confirm it. Scripts and tools can use covdbg whoami --json, which prints the same answer as one JSON object.

When a run is refused, the message names the account and the team it was decided for, so a missing seat is easy to spot. A sign-in or project token that the license service rejects is now refused with a message to run covdbg login, instead of running on the cached offline decision. An unreachable service still uses the cached decision, as before.

See the sign-in commands and the licensing FAQ.

Moving to 1.4.0

  1. Install covdbg 1.4.0.
  2. Run covdbg whoami. If it names no team, or not the one you want, run covdbg login --team <slug>.
  3. To measure DLLs, add modules.include to .covdbg.yaml and make sure the libraries' sources pass files.

CI runs with COVDBG_PROJECT_TOKEN need no changes. The full list of changes is in the changelog.

Try it with your project

Download covdbg and follow the quick-start guide. If you have questions about measuring your libraries or setting up your team, email our support team.

We store your theme and cookie choices to remember your preferences. With your permission, Google Analytics and our self-hosted Matomo help us understand how this website is used.

You can change your choice using Cookie settings in the footer. Cookie policy · Privacy policy