# **********************************************************

# Copyright (c) 2010-2021 Google, Inc.  All rights reserved.

# Copyright (c) 2008-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.



===========================================================================

                     D O C T O R   M E M O R Y

===========================================================================



===========================================================================

What is Dr. Memory?



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 is based on the DynamoRIO binary translation engine.  Dr. Memory

has full support for Windows (XP and higher) and Linux, with preliminary

Mac OSX, Linux/ARM, and Android/ARM support (32-bit only for those three)

available as a Beta release.



Dr. Memory also includes a system call tracing tool for Windows and a

symbol query utility.



===========================================================================

How do I use Dr. Memory?



Build your application with debug information and then run it under

Dr. Memory.  Errors found are printed to the screen, and a summary is shown

at the end of the run.



--------------------------------------------------

Quick start for Linux:



1) g++ -m32 -g -fno-inline -fno-omit-frame-pointer *.cpp -o myapp

2) bin/drmemory -- ./myapp args_to_myapp



--------------------------------------------------

Quick start for Windows:



If you used the installer, it added Dr. Memory to the current user's PATH,

and a fresh shell should find the "drmemory" command:



1) cl /Zi /MT /EHsc /Oy- /Ob0 /Femyapp.exe *.cpp

2) drmemory -- myapp.exe args_to_my_app



--------------------------------------------------

Quick start for Mac:



1) c++ -m32 -g -fno-inline -fno-omit-frame-pointer *.cpp -o myapp

2) bin/drmemory -- ./myapp args_to_myapp



===========================================================================

Full Documentation



If you are viewing this file, you have already successfully unpacked the

Dr. Memory distribution archive.  To view the documention, point your web

browser at the drmemory/docs/html/index.html file, or online at

http://drmemory.org/.



===========================================================================

Contact



This project is provided as-is, with no official support.  Use

the Dr. Memory Users group at

http://groups.google.com/group/drmemory-users/ to ask questions and seek

help on using Dr. Memory.



Dr. Memory's source code and issue tracker live at

https://github.com/DynamoRIO/drmemory



We welcome contributions to Dr. Memory.  Please see our

instructions for contributing at https://drmemory.org/page_contribute.html.



===========================================================================

