CLI tool
CobaltFusion/DebugViewPP avatar
CobaltFusion/DebugViewPP

DebugView++ watches OutputDebugString and every other log source at once

DebugView++, collects, views, filters your application logs, and highlights information that is important to you!

1,272 stars177 forksC++BSL-1.0

At a glance

What is it?
DebugView++ is a Windows log viewer that grew from a Win32 OutputDebugString reader into a multi-source tailer for files, consoles, serial ports, sockets and UDP traffic. It suits Windows developers and support engineers who need to see many processes' output in one window, and it is in low-maintenance mode.
Who is it for?
Adopt DebugView++ if you debug Windows software that logs through OutputDebugString, or if you support a system where you need to tail logfiles, console output, serial ports and UDP traffic in a single filtered window. Do not expect new features, because the project states it is in low-maintenance mode and that new features are only added if pull requests come with tests.
Can I use it commercially?
Yes. BSL-1.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

It started as a Sysinternals DebugView clone and became a multi-source tailer

DebugView++ started as a viewer for Win32 OutputDebugString messages in the style of Sysinternals DebugView. The project description puts it plainly: it collects, views and filters application logs, and highlights information that is important to you.

What it became is broader than the original. The README lists what it can now attach to: tailing ASCII and UTF logfiles, which you do by dragging the file onto the window; Android ADB output or any console based standard output; serial ports, using plink; sockets, telnet or ssh ports, also using plink; and it can listen for UDP messages, which the README says is handy in distributed systems.

That list matters for the audience. The original Sysinternals tool is for one specific Windows mechanism. DebugView++ is for the general problem of getting diagnostic output out of a running system, whatever the transport.

There is one important structural difference from the original, and the README leads with it: with DebugView++ you can see messages from different processes, not just attached processes. OutputDebugString output from every process on the machine is visible in one place, which turns a debugging tool into a triage tool. When a service, a driver and your application are all writing to the debug stream, seeing them side by side is the point.

The comparison the project makes about performance is worth repeating: minimal delay of the traced application, and compared to the original dbgview a factor of 10 better.

Filtering, highlighting and linked views are the actual feature set

The README asks when this is useful, and the answer is not really about capture. With DebugView++ you can see messages from different processes, not just attached ones. Then there is filtering, coloring and linking: to make sense of a large amount of information, humans need to filter it or order it, and different colors for important events help interpret occurring patterns. And filtering is nice, but sometimes you need to see a line in its context, which is where linked views help, since they let you switch quickly between a fully filtered view and a fully detailed view.

The concrete list of features is longer. There is capture of both Win32 and Global Win32 messages, tabbed views, resolving of process PID to name and tracking their lifetime, filtering by process or message, and advanced filtering with exclude, track, stop and clear operations, optionally using regular expressions. There is line and token highlighting, so you can create your own syntax highlighting.

The regular expression support is the feature that separates it from a plain log tail. A log line in a large system is often uninteresting except when it matches a pattern, and the ability to exclude, track or stop on a match turns a wall of text into an event stream.

The design goal is visible in the readme's list of features they dream about and will create when they choose to spend the time: a gantt chart-like horizontal timeline with bars and flags to identify events, a better plugin based input system, transparent background streaming to disk, and proper memory limits. The last one is a real gap, and the README is candid that the history limit does not work right.

The known issues are documented with their workarounds

Most projects bury their known issues. This one lists three, and two of them come with a workaround or a call for help, which is more useful than silence.

The first is the history limit. The README says it does not work right, and calls this troublesome for long-running duration tests. The workaround given is to send DBGVIEWCLEAR before each test-cycle, which clears all logs from memory. If you are running an overnight soak test and watching memory climb, that command is the answer.

The second is pass-through mode. There is no pass-through mode like the original dbgview had, and the README asks for help to implement it. The irony is that pass-through mode arrived later: the v1.20.0.0 release notes list verbose mode and pass-through mode among the new features, contributed with test scenarios and information from outside contributors. So the list of known issues in the older section of the README is partly stale, which is itself a reason to read the release notes rather than only the README.

The third issue was catching kernel messages, also marked as help wanted, and the v1.20.0.0 notes list capture of kernel messages as a new feature too. The same pattern holds there.

So the README's known-issues list and the release notes disagree, and the release notes are the newer information. That is a small but real signal about how to evaluate the project: the README body mixes a 2024-era description of version 1.9 with the 1.20 release notes above it, and the sections have not been fully reconciled.

One self-contained executable, with setup provided but not required

Packaging is deliberately frictionless. The README lists a single self-contained executable, with setup provided but not required, and says it runs without prerequisites on Windows XP SP3 and up, with v1.5 and earlier also on Windows XP SP2. That XP line is historical: the 2022 update note says the project was migrated to VS2022 and boost 1.80, and Windows XP 32-bit support was removed. The v1.8.x entry describes the last version with official XP support, the v141_xp target.

Performance characteristics are stated as feature bullets: a fast and responsive user interface, even with more than 50,000 incoming lines per second, and an in-memory compressed log buffer using google snappy, which typically consumes about 50% less RAM.

The repository layout reflects a C++ project with a CMake build. There is a CMakeLists.txt at the root, a build.bat and a build_with_ninja.bat for Windows builds, a cmake/ directory, application/ for the main code, utils/, companions/ for the extensions such as the OutputForwarder, doc/, art/ for the images used in the README, and azure-pipelines.yml for CI. The default branch is develop, and the Appveyor build status badge in the README points at that branch.

The companion extension deserves a mention. The README points to the OutputForwarder companion extension for VS2022 in the Visual Studio Marketplace, and mentions nuget.exe can be downloaded from nuget.org. That is how a Visual Studio user gets their debug output into the tool.

There is also a dbgview_testfiles/ directory, which is worth noting given the maintenance policy below.

Low-maintenance mode means new features need pull requests with tests

The maintenance posture is stated at the top of the release notes and it is unambiguous. The project is in low-maintenance mode, which means new features are only added if pull requests are provided with tests. Updates are limited to keeping the status quo and OS-related things updated. And the author is looking for maintainers, with an invitation to join in bugfixing or adding features.

That last point is the one to weigh. A single-maintainer project that is openly asking for help is a different situation from a project that has been abandoned, and the repository is not archived. But it does mean the roadmap is set by whoever has time to write a tested pull request, not by a team with quarterly goals.

The dates support the picture. The v1.20.0.0 release came on 2026-04-23, and the repository has been pushed to since then. Before that, the release history is sparse: v1.9.0.28 in February 2024 and v1.9.0.24 two days before it, and then v1.20.0.0 more than two years later. There is no sign of the steady patch stream a v1.x line usually has, which is consistent with a project that only cuts a release when something has changed.

The licence is Boost Software License 1.0, with the LICENSE file in the repository as the authoritative text. BSL-1.0 is a permissive licence with no copyleft obligations, and this is a licensing statement rather than legal advice.

The sponsors listed are JetBrains for ReSharper C++, Backtrace for crash information, and IncrediBuild for parallel C++ builds. All three sell to the same audience, which tells you who the tool is aimed at.

The alternative is the original DebugView, and it does less

The honest comparison is with the Sysinternals DebugView that DebugView++ took its name and its original scope from.

The original is a viewer for Win32 OutputDebugString messages. DebugView++ keeps the OutputDebugString core and adds the surrounding transport options.

The difference in approach is that DebugView++ is a multi-tab aggregator while the original is a single-stream viewer. If your problem is strictly Win32 debug output from one process, the original is smaller and you already have it. The moment you want the file tail, the console output and the debug stream in one place with one filter, the aggregator earns its size.

There is a second alternative worth naming for the same reason: the platform tools. PowerShell, or a terminal, can tail a file and filter it with regular expressions. What that does not do is capture OutputDebugString without extra tooling, and it does not give you the process lifetime view or the cross-process view.

The most relevant comparison for a support engineer is probably a paid log analysis product, which will do more with structured log files and dashboards. DebugView++ is a live tailer for unstructured diagnostic output, which is a different job.

Editorial conclusion

Adopt DebugView++ if you debug Windows software that logs through OutputDebugString, or if you support a system where you need to tail logfiles, console output, serial ports and UDP traffic in a single filtered window. Do not expect new features, because the project states it is in low-maintenance mode and that new features are only added if pull requests come with tests. Before you rely on it, check the v1.20.0.0 notes for the known history limit problem on long duration tests, and use the DBGVIEWCLEAR command between test cycles to work around it.

Frequently asked questions

What kinds of log sources can DebugView++ collect?

It started as a viewer for Win32 OutputDebugString messages, and the README says it can now be attached to tailing ASCII and UTF logfiles, Android ADB or any console based standard output, serial ports using plink, sockets and telnet or ssh ports using plink, and it can listen for UDP messages.

How do I work around the DebugView++ history limit on long running tests?

The README says the history limit does not work right, which is troublesome for long-running duration tests, and the workaround is to send DBGVIEWCLEAR before each test-cycle, which clears all logs from memory.

Will new features be added to DebugView++?

The project states it is in low-maintenance mode, that new features are only added if pull requests are provided with tests, and that updates are limited to keeping the status quo and OS-related things updated. The author is also looking for maintainers.

How do I filter and highlight log messages in DebugView++?

The README lists filtering by process or message, advanced filtering with exclude, track, stop and clear operations optionally using regular expressions, line and token highlighting for your own syntax highlighting, and linked views that switch between a fully filtered view and a fully detailed view.

Does DebugView++ need to be installed?

No. The README lists a single self-contained executable with setup provided but not required. There is also a companion OutputForwarder extension for VS2022 available in the Visual Studio Marketplace to forward Visual Studio output into it.

Official sources

  1. CobaltFusion/DebugViewPP on GitHub
  2. Issues
  3. License: BSL-1.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/cobaltfusion-debugviewpp.svg)](https://hysenlabs.com/projects/cobaltfusion-debugviewpp)

Was this useful?