Creating complete memory dumps

What are memory dumps?

When creating a memory dump, the contents of an application’s memory are written to a .dmp file. A minimal version of such a .dmp file is automatically generated if a Voxtron module crashes. These memory dumps provide information about what the program was doing when the crash happened.

Minimal vs complete memory dumps

The .dmp files that are generated after a crash only contain a minimum amount of information (i.e. stack memory).

If more information is required, a complete memory dump needs to be generated, containing both stack and heap memory.

Creating a complete memory dump

First you need to download the procdump tool:  http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

Then you can create a complete memory dump using the command: procdump -ma tbrts.exe

This will generate a .dmp file containing the complete memory of the IVR.

User Stack Tracing

In case of a memory leak, it might be necessary to enable User Stack Tracing (UST) before creating the memory dump. Aside from the memory contents, the .dmp will now also include information about which part of the program allocated the memory.

For this you need to download the gflags tool: http://msdn.microsoft.com/en-us/library/windows/hardware/ff549557%28v=vs.85%29.aspx

To create a complete memory dump with UST enabled:

  1. Stop the IVR
  2. Run: gflags.exe /i tbrts.exe +ust
  3. Start the IVR
  4. Make some test calls
  5. Run: procdump -ma tbrts.exe

If  UST is no longer needed, you can disable it again: gflags.exe /i tbrts.exe -ust

Note that you need to restart the IVR after enabling/disabling UST.

Leave a Reply