Real-time memory diagnostic tool
LiveHeap is an experimental real-time memory diagnostic tools for Windows x86 applications.
- 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.
- Download and extract LiveHeap file to a convenient location.
- Launch the process to be analysed.
- Launch LiveHeap.exe (from the above zip)
- From the file menu, choose Attach to process
- Select the process and press OK
- LiveHeap should show a list of memory allocations as they occur. For details on the meaning of each column, see below.
- Select an item in the list to see the callstack for that item
- 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.
- 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.
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".