LiveHeap

Real-time memory diagnostic tool

LiveHeap is an experimental real-time memory diagnostic tools for Windows x86 applications.

Features

  • Attach to an existing process and watch memory allocations in real-time
  • Shows all memory allocations, on a per call-stack basis
  • Trigger a breakpoint on a particular callstack and have debugger stop on that allocation
  • Shows call stack for each allocation.

Using LiveHeap

  1. Download and extract LiveHeap file to a convenient location.
  2. Launch the process to be analysed.
  3. Launch LiveHeap.exe (from the above zip)
  4. From the file menu, choose Attach to process
  5. Select the process and press OK
  6. LiveHeap should show a list of memory allocations as they occur. For details on the meaning of each column, see below.
  7. Select an item in the list to see the callstack for that item
  8. To trigger a breakpoint for a particular allocation, select the checkmark on that item.

Explanation of columns

The main list of allocations shows the columns described below. For columns that display a second figure in brackets, the second figure is the delta since the last "delta reset".

  • Caller - an identifier for the stack trace that caused these allocations. These ID's are allocated in sequentially increasing order.
  • Type - the type of memory allocation
  • Count - the number of unfreed allocations made on this call stack.
  • Bytes - the number of unfreed bytes allocated on this call stack
  • Alloc Count - the number of allocations made on this call stack.
  • Alloc Bytes - the number of bytes allocated on this call stack
  • Free Count - the number of allocations made on this call stack and subsequently freed on any call stack.
  • Free Bytes - the number of bytes allocated on this call stack and subsequently freed on any call stack.

Toolbar Buttons

  • Launch new Process - currently unimplemented
  • Attach to Process - attaches LiveHeap to an running application
  • Refresh - refreshes the current view
  • Auto Refresh - when pressed, causes the display to refresh once per second
  • Clear All - clears all allocations in the list
  • Reset Deltas - clears the delta baseline.
  • Sort by Deltas - when selected, sorts by deltas rather than actual values.
  • Always on Top - causes LiveHeap to stay on top of other windows.

Known issues

LiveHeap is by no means production quality product. It is however an extremely useful tool (when it works):

  • The Launch New Process command has not been implemented.
  • The call stacks displayed can be somewhat questionable. For performance reasons, LiveHeap does its own stack walk and doesn't rely on OS services for this - it's not perfect though, especially on release mode builds.
  • Under Vista, if the process is launched from a debugger, LiveHeap is unable to attach to it. Launch the process from Explorer, then attach a debugger, then attach LiveHeap.
  • Under Vista, Some processes are for unknown reasons "unattachable" these appear in the attach dialog as "Unknown".