Debugging Memory Problems with MemoryScape™ : Chapter 4 Creating Programs for Memory Debugging : Using env to Insert the Agent
Using env to Insert the Agent
When MemoryScape attaches to a process that is already running, the agent must already be associated with it. You can do this in two ways:
Manually link the agent as described in previous sections.
Start the program using env (see man env on your system). This pushes the agent into your program.
 
NOTE >> Preloading cannot be used with Cray or Blue Gene/L platforms.For information on preloading with Blue Gene/P and Blue Gene/Q, see the earlier section Linking Your Application with the Agent.
The variables required by each platform are shown in the following table. The placeholder <hia_dir> represents the directory in which the agent is found. See the previous section for how to determine this location.
Platform
Variable
Apple Mac OS X
DYLD_INSERT_LIBRARIES=<hia_dir>/libtvheap.dylib
Note: See "Mac OS" for detail on how this environment variable works.
IBM AIX
MALLOCTYPE=user:tvheap_mr.a
If you are already using MALLOCTYPE for another purpose, reassign its value to the variable TVHEAP_MALLOCTYPE and assign MALLOCTYPE as above; when the agent starts it will correctly pass on the options.
Linux
 
32-bit
LD_PRELOAD=<hia_dir>/libtvheap.so
64-bit
LD_PRELOAD=<hia_dir>/libtvheap_64.so
Sun
 
32-bit generic
LD_PRELOAD=<hia_dir>/libtvheap.so
32-bit specific
LD_PRELOAD_32=<hia_dir>/libtvheap.so
64-bit generic
LD_PRELOAD=<hia_dir>/libtvheap_64.so
64-bit specific
LD_PRELOAD_64=<hia_dir>/libtvheap_64.so
If the agent is the only library you are preloading, use the generic variable. Otherwise, use whichever variable was used for the other preloaded libraries.