Free Debuggers, Static Source Code Analysis Tools, Bug Trackers
Source code checkers, static code analysis utilities (Lint), debugging tools, trace, monitoring
Free Debugging Tools, Static Source Code Analysis Utilities, Bug Trackers
Get rid of unwanted and unexpected features (a.k.a. "bugs") in your programs. Listed here are debuggers, static source code analyzers or static source code checkers (like lint, that scan your source code for suspicious constructs that might be a bug waiting to happen), debugging tools (like strace that traces a system call), API wrappers (that wrap calls to system libraries so that you can check for valid parameters/arguments in system calls), as well as bug trackers (or "issue trackers" if you are particularly sensitive to the word "bug") which allow you to keep track of bug reports from users and the status of the bugs.
If you want resource leak checkers (looks for resource leaks), memory leak detectors and heap checkers (to check the integrity of your heap), libraries for unit testing please check the Free Debugging Source Code, Libraries and Object Modules page instead.
Free Static Source Code Analyzers (Static Source Code Analysis Tools) or Lint Utilities
- Splint / LCLint (Lint - static source code analysis tool)
Splint (formerly LCLint) is a rewrite of the famous Unix lint utility. It is a static source code analyser, that checks your C program source code for bugs and potential problems. This static source code analysis tool requires a certain amount of configuration before you can use it productively. There are versions for a number of operating systems, including Win32, Linux and other Unix systems.
- Ftncheck (Lint utility / Static Source Code Analysis Utility for Fortran)
ftncheck, a static source code analysis utility, checks your Fortran programs for semantic errors, leaks and potential bugs. For example, you can use ftncheck to scan your program for the use of uninitialized variables and undeclared variables.
- Jlint: Java Program Checker (Lint)
Like the lint utility which checks C programs, jlint is a static source code analysis tool that scrutinizes your Java source code for suspicious constructs that might indicate a program bug. Although the program is shareware, it is distributed with source code without any restrictions (and hence is listed here).
Free Debuggers, API Wrappers, System Tracers, Bug Trackers
- Bugzilla Bug Tracking System
Bugzilla is a defect tracking system that allows programmers to track the status of bugs in their applications. It is probably one of the most well-known open source bug tracking systems around. It is configurable, includes "advanced reporting capabilities", supports inter-bug dependencies, etc. It is written in Perl and is licensed under the Mozilla Public License.
Valgrind is an x86 Linux debugger and profiler. It includes tools for detecting memory management errors (such as the use of uninitialised memory, use of memory after it has been freed, writing to areas of the stack that you should not write to, memory leaks, passing unitialised or unaddressable memory to system calls, reading or writing beyond the end of malloc'd blocks, misuse of POSIX threads API, mismatched memory allocation calls, overlapping source and destination pointers for memcpy() and related functions, etc), a cache profiler, and a thread debugger which is able to help you detect data races in multithreaded programs.
- Microsoft Windows Driver Kit and WinDbg
WinDbg, included in the Windows Driver Kit (formerly known as the DDK), is a source level debugger with a graphical interface that allows you to debug both user-mode and kernel-mode code. You can view source code, set breakpoints, view variables including C++ objects, do stack traces, etc. It supports remote debugging, which is required if you are debugging kernel-mode code, but which may also be used to debug user-mode code. The tools available here are for Windows XP, Vista, 7, 8, 8.1 and 10 (and presumably later versions). There is a separate Debugging Tools for Windows Me available for the extremely unlikely situation where you are actually testing something for Windows ME.
- UPS Debugger
This is actually a graphical source level debugger for X Window, but it contains a built in C interpreter which can handle single or multiple source files. You can use it to build a byte-code executable and execute the interpreter on that executable. If you need an interpreter to debug or prototype programs, or to just learn the language, check this out. It supports the following platforms: Solaris, SunOS, Linux, FreeBSD, BSD/OS, and possibly other Unices.
Debuggy is a Windows debugger, disassembler, Windows resource extractor, file hex editor, window sniffer and API spy all rolled into one.
Insight is a GDB (the GNU debugger) graphical front end created by Redhat and Cygnus. The GUI allows you an easy-to-use interface to the gdb commands.
- GoBug Debugger
GoBug is a symbolic debugger for Win32 assembly language programs that works under Windows 9x, ME, NT4, 2000, XP, Vista and Windows 7. You can set breakpoints, keep a (partial) log of Windows events and messages, single step through the program, view the arguments and local data, check the return values (and errors) from API calls, etc.
- API Monitor
This tool allows you to monitor the API calls made by a Windows application. It is useful in figuring out how other applications work as well as in tracking problems in your own program by examining the API calls it makes. Since it's a user mode application, it can only monitor calls made by usermode programs and not things like drivers.
- GNATS (GNU Bug Tracking System)
GNATS is the GNU Bug Tracking System (not the same as GNAT which is the GNU Ada Translator). It is a set of tools to help you track bug reports on your software. Like all things GNU, it comes with source code.You can get more information from Dan Kegel's unofficial GNATS page.
- Strace (Trace Unix system calls)
strace traces Unix system calls, allowing you an invaluable peek into how your program (or any other program for that matter) interacts with the operating system. A must to have when writing Unix programs. The source code can be compiled on numerous Unix systems, including Linux, SunOS, Solaris and some versions of IRIX.
- DDD (Data Display Debugger)
DDD, the Data Display Debugger, is a GUI debugger that interfaces with command line debuggers like GDB, DBX, JDB, WDB, XDB, the Perl debugger and the Python debugger. It allows you to view the source code as well as display data structures. It supports the debugging of a whole hosts of programming languages including Ada, C, C++, Chill, Fortran, Java, Modula, Pascal, Perl, Python and machine level debugging. The program is free, and comes with GPL source code. Many operating systems are supported, including Unix (and clones) and Windows.
- Qualitas 386SWAT (Protected Mode Debugger)
386SWAT is a protected mode debugger developed by Qualitas Inc (makers of the memory manager 386MAX). It not only allows you to debug real, protected mode and virtual 8086 mode programs under DOS and Windows, it is also a Windows Kernel Debugger in the fashion of WDEB386 but without the need another machine to debug your program (just another monitor).
- GRDB Debugger
The GRDB ("Get Real Debugger") is a command line real mode debugger that supports the Pentium instruction set, MMX, debugging of floating point instructions, etc. It handles software and hardware breakpoints, session logging, command line history, etc. The full source code is provided. The program requires a 386 or better processor.
TempleMon is a low-level debugger and disassembler for Atari ST systems that comes with source code. It is in German. (Scroll to the bottom of the linked page to find the listing for TempleMon).
- GNU Visual Debugger (now part of the GNAT Programming Studio)
This debugger, written in Ada, is "an extensible graphical debugger licensed under the GNU General Public License". The debugger can be launched remotely via a variety of protocols (such as rsh, ssh, etc), supports different languages (C, C++, Ada), able to handle multiple processes, multiple threads, etc. It is available on "all Unixes" and Windows systems. It is now part of the GNAT Programming Studio (an Ada compiler suite).
How to Link to This Page
It will appear on your page as: