Development framework for building dynamic analysis tools
There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.
The Valgrind distribution currently includes six production-quality tools: a memory error detector, two thread error detectors, a cache and branch-prediction profiler, a call-graph generating cache profiler, and a heap profiler.
Valgrind also includes two experimental tools: a heap/stack/global array overrun detector, and a SimPoint basic block vector generator.
Valgrind runs on the following platforms: X86/Darwin (Mac OS X), X86/Linux, AMD64/Linux, PPC32/Linux, and PPC64/Linux.
How to install and run: Unarchive, open a Terminal window, go into Valgrind's folder and run the following commands from the command line:
sudo make install
- Valgrind will save you hours of debugging time. With Valgrind tools you can automatically detect many memory management and threading bugs. This gives you confidence that your programs are free of many common bugs, some of which would take hours to find manually, or never be found at all. You can find and eliminate bugs before they become a problem.
- Valgrind can help you speed up your programs. With Valgrind tools you can also perform very detailed profiling to help find bottlenecks in your programs.
- Valgrind is free. Free-as-in-speech: you can download it, read the source code, make modifications, and pass them on, all within the limits of the GNU GPL. And free-as-in-beer: we aren't charging for it.
- Valgrind runs on several popular platforms, such as x86/Linux, AMD64/Linux and PPC32/Linux. Valgrind works with all the major Linux distributions, including Red Hat, SuSE, Debian, Gentoo, Slackware, Mandrake, etc.
- Valgrind is easy to use. Valgrind uses dynamic binary instrumentation, so you don't need to modify, recompile or relink your applications. Just prefix your command line with valgrind and everything works.
- Valgrind is not a toy. Valgrind is first and foremost a debugging and profiling system for large, complex programs. We have had feedback from users working on projects with up to 25 million lines of code. It has been used on projects of all sizes, from single-user personal projects, to projects with hundreds of programmers.
- Valgrind is suitable for any type of software. Valgrind has been used with desktop applications, libraries, databases, games, web browsers, network servers, distributed control systems, virtual reality frameworks, transaction servers, compilers, interpreters, virtual machines, telecom applications, embedded software, medical imaging, scientific programs, signal processing programs, video/audio programs, business intelligence software, financial/banking software, operating system daemons, etc, etc. See a list of projects using Valgrind.
- Valgrind is widely used. Valgrind has been used by thousands of programmers across the world. We have received feedback from users in over 30 countries.
- Valgrind works with programs written in any language. Because Valgrind works directly with program binaries, it works with programs written in any programming language, be they compiled, just-in-time compiled, or interpreted. The Valgrind tools are largely aimed at programs written in C and C++, because programs written in these languages tend to have the most bugs! But it can, for example, be used to debug and profile systems written in a mixture of languages. Valgrind has been used on programs written partly or entirely in C, C++, Java, Perl, Python, assembly code, Fortran, Ada, and many others.
- Valgrind gives 100% coverage of user-space code, even within system libraries. You can even use Valgrind on programs for which you don't have the source code.
- Valgrind is extensible. Anyone can write powerful new tools that add arbitrary instrumentation to programs. This is much easier than writing such tools from scratch. This makes Valgrind ideal for experimenting with new kinds of program analysis tools. It has been used for research purposes by people at the following universities: Cambridge, MIT, UC Berkeley, UC Santa Barbara, Carnegie Mellon, Cornell, University of New Mexico, Australian National University, University of Melbourne, TU Muenchen (Munich) and Graz University of Technology.
- Valgrind is actively maintained. The Valgrind developers are constantly working to fix bugs, improve Valgrind, and ensure it works as new Linux distributions and libraries come out. There are also mailing lists you can subscribe to, and contact if you're having problems.
In a hurry? Add it to your Download Basket!
What's New in This Release:
- A bug fix release. It fixes various bugs reported in 3.10.0 and backports fixes for all reported missing AArch64 ARMv8 instructions and syscalls from the trunk. If you package or deliver 3.10.0 for others to use, you might want to consider upgrading to 3.10.1 instead.
- The following bugs have been fixed or resolved. Note that "n-i-bz" stands for "not in bugzilla" -- that is, a bug that was reported to us but never got a bugzilla entry. We encourage you to file bugs in bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather than mailing the developers (or mailing lists) directly -- bugs that are not entered into bugzilla tend to get forgotten about or ignored.
- 335440 arm64: ld1 (single structure) is not implemented
- 335713 arm64: unhanded instruction: prfm (immediate)