blob: 75fcf2326dbe67b7176bf77b2b641ade01a07bd2 [file]
/* **********************************************************
* Copyright (c) 2012-2021 Google, Inc. All rights reserved.
* Copyright (c) 2009 VMware, Inc. All rights reserved.
* **********************************************************/
/* Dr. Memory: the memory debugger
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License, and no later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/**
****************************************************************************
****************************************************************************
\mainpage Home
Dr. Memory is a memory monitoring tool capable of identifying
memory-related programming errors such as accesses of uninitialized memory,
accesses to unaddressable memory (including outside of allocated heap units
and heap underflow and overflow), accesses to freed memory, double frees,
memory leaks, and (on Windows) handle leaks, GDI API usage errors, and
accesses to un-reserved thread local storage slots.
Dr. Memory operates on unmodified application binaries running on Windows,
Mac, Linux, or Android on commodity IA-32, AMD64, and ARM hardware.
Dr. Memory is built on the [DynamoRIO](https://dynamorio.org)
dynamic instrumentation tool platform.
# Downloading Dr. Memory
Dr. Memory is released under [an LGPL license](page_license.html). Windows, Linux, and Mac packages [are available for download](\ref page_download). The sources are also [browsable](https://github.com/DynamoRIO/drmemory).
# Dr. Memory Performance
Dr. Memory is faster than comparable tools, including Valgrind, as shown in our [CGO 2011](http://www.cgo.org) paper [Practical Memory Checking with Dr. Memory](http://www.burningcutlery.com/derek/docs/drmem-CGO11.pdf), where we compare the two tools on Linux on the SPECCPU 2006 benchmark suite:
\image html drmem-spec2k6-sm.png
(Valgrind is unable to run 434.zeusmp and 447.dealII).
# Documentation
Documentation is included in the release package as well as on this site: start with \ref page_install and \ref page_prep.
# System Call Tracer for Windows
The Dr. Memory release includes a \ref page_drstrace.
# Fuzz Testing Infrastructure
Dr. Memory includes Dr. Fuzz, a \ref page_fuzzer, along with a configurable \ref page_drfuzz. Dr. Fuzz targets in-process function-level fuzzing, repeatedly running a target function while varying the inputs. It requires no access to source code, and supports code coverage-guided fuzzing, an input corpus, input dictionaries, and custom mutators.
# Discussion List
Dr. Memory has its own [discussion list](http://groups.google.com/group/DrMemory-Users).
# Issue Tracker
Dr. Memory has its own [Issue Tracker](https://github.com/DynamoRIO/drmemory/issues).
# Contributing to Dr. Memory
We welcome contributions to Dr. Memory. We use the [same code review and workflow as for DynamoRIO](https://dynamorio.org/page_contributing.html).
****************************************************************************
****************************************************************************
*/