Dr. Memory
Dr. Memory Framework

Dr. Memory provides a Software Development Kit called the Dr. Memory Framework, or DRMF. The DRMF allows other tools to leverage the powerful features built into Dr. Memory. The DRMF is organized into separate DynamoRIO Extension libraries:

Using DRMF

DRMF is now distributed in a combined package with DynamoRIO for DynamoRIO versions 5.0 and higher. If you are using such a combined package, DRMF will be automatically located and loaded for you when you execute the find_package(DynamoRIO) command.

If you are using a standalone Dr. Memory package, to use one or more of the components of DRMF, locate the Dr. Memory Framework using the find_package command right after similarly locating the DynamoRIO package:

find_package(DynamoRIO)
find_package(DrMemoryFramework)

All of the components of DRMF share the same versioning scheme. You can pass a required version to find_package:

find_package(DrMemoryFramework 1.0)

To point CMake at the framework, set the DrMemoryFramework_DIR variable to point at the drmf subdirectory of the Dr. Memory package that you are using. For example:

cmake -G"Ninja" -DDynamoRIO_DIR=c:/path/to/DynamoRIO-Windows-4.1.0-8/cmake -DDrMemoryFramework_DIR=c:/path/to/DrMemory-Windows-1.6.0-2/drmf ../mysrcs/

Once the package is located, use the standard method of using an Extension for each component your client uses. The two steps combined will look like this example in your client's CMakeLists.txt file:

find_package(DrMemoryFramework)
use_DynamoRIO_extension(clientname drsyscall)
use_DynamoRIO_extension(clientname umbra)

That will automatically set up the include paths and library dependences.

See the documentation for the individual components for information on how to use each one.