Windows Heap Profiler Frontend
C#
Latest commit 5255e6b Apr 27, 2015 @kg DPI / UAC manifest
Crash fix
Failed to load latest commit information.
Properties Various work on improving load performance and reducing memory usage. Mar 11, 2011
ext Fixed a bug in AllocationRanges.Update May 9, 2011
.gitignore Code quality cleanups Mar 18, 2011
.gitmodules Make submodules easier to checkout Apr 27, 2015
ActivityIndicator.cs Make submodules easier to checkout Apr 27, 2015
CustomTooltip.Designer.cs Checkpoint Apr 6, 2011
CustomTooltip.cs Make submodules easier to checkout Apr 27, 2015
CustomTooltip.resx Checkpoint Apr 6, 2011
DatabaseFile.cs Actually obey the symbol settings from the symbol settings dialog May 16, 2011
DeltaHistogram.cs Make submodules easier to checkout Apr 27, 2015
DeltaList.cs Make submodules easier to checkout Apr 27, 2015
DiffViewer.Designer.cs Can also filter by effective namespace now May 2, 2011
DiffViewer.cs Make submodules easier to checkout Apr 27, 2015
DiffViewer.resx Filter textbox pulled out into usercontrol Apr 1, 2011
ErrorListDialog.Designer.cs Report error messages to a hidden-by-default error list dialog so tha… May 16, 2011
ErrorListDialog.cs Report error messages to a hidden-by-default error list dialog so tha… May 17, 2011
ErrorListDialog.resx Report error messages to a hidden-by-default error list dialog so tha… May 17, 2011
FilterControl.Designer.cs Tweaks to treemap layout algorithm Apr 28, 2011
FilterControl.cs Tweaks to treemap layout algorithm Apr 28, 2011
FilterControl.resx Filter textbox pulled out into usercontrol Apr 1, 2011
HSV.cs Make submodules easier to checkout Apr 27, 2015
HeapDiff.cs Make submodules easier to checkout Apr 27, 2015
HeapLayoutView.cs Make submodules easier to checkout Apr 27, 2015
HeapProfiler.csproj DPI / UAC manifest Apr 27, 2015
HeapProfiler.sln Added Fracture as a submodule Apr 13, 2011
HeapRecording.cs Make submodules easier to checkout Apr 27, 2015
HeapSnapshot.cs Make submodules easier to checkout Apr 27, 2015
HeapViewer.Designer.cs Checkpoint Apr 7, 2011
HeapViewer.cs Make submodules easier to checkout Apr 27, 2015
HeapViewer.resx Tweaks Mar 30, 2011
LICENSE First Commit Feb 16, 2011
MainWindow.Designer.cs Make submodules easier to checkout Apr 27, 2015
MainWindow.cs Make submodules easier to checkout Apr 27, 2015
MainWindow.resx Filter textbox pulled out into usercontrol Apr 1, 2011
ModuleSelector.Designer.cs Checkpoint: Generating diffs from the database, but symbol caching is… Mar 27, 2011
ModuleSelector.cs Module filtering now treats 0 selected modules the same as all module… Apr 29, 2011
ModuleSelector.resx Checkpoint: Generating diffs from the database, but symbol caching is… Mar 27, 2011
Program.cs Make submodules easier to checkout Apr 27, 2015
README.md Updates to the readme Apr 13, 2011
Settings.cs Make submodules easier to checkout Apr 27, 2015
SnapshotTimeline.cs DPI / UAC manifest Apr 27, 2015
StackFiltersDialog.Designer.cs Stack filtering partially implemented Apr 12, 2011
StackFiltersDialog.cs Make submodules easier to checkout Apr 27, 2015
StackFiltersDialog.resx Stack filtering partially implemented Apr 13, 2011
StackGraph.cs Can also filter by effective namespace now May 2, 2011
SymbolSettingsDialog.Designer.cs Some tweaks Mar 7, 2011
SymbolSettingsDialog.cs Make submodules easier to checkout Apr 27, 2015
Treemap.cs Visual tweaks May 16, 2011
UMDH Input Sample.txt Checkpoint Mar 7, 2011
Util.cs Make submodules easier to checkout Apr 27, 2015
app.config DPI / UAC manifest Apr 27, 2015
app.manifest DPI / UAC manifest Apr 27, 2015
icon.ico Added support for associating .heapdiff files with Heap Profiler and … Feb 21, 2011

README.md

Heap Profiler

This is a graphical frontend for the UMDH and GFlags tools included in Microsoft Debugging Tools for Windows, written in C#. It automates the process of capturing heap allocation snapshots for a running application, and provides viewing and filtering tools for analyzing those snapshots.

Usage

You'll need Windows SDK 7.1, along with the 32-bit version of Microsoft Debugging Tools for Windows. If you have the former, you will automatically be prompted to install the latter. Run it, select an executable to profile, provide any arguments if needed, and hit Launch. Click 'Capture Now' to capture a snapshot at any time, or turn on 'Auto Capture' to capture a snapshot every 5 seconds. Please note that capturing heap information requires running as administrator (saved captures can be viewed without administrator, though) Once you have some captures, select two of them from the list and click the 'Diff Snapshots' button to generate a diff of the two snapshots and open it in the viewer. You can also select a single point of time and click 'View Selection' to view the heap at that time. You can save a collection of captures to a folder via the file menu for access later. The saved captures include symbol information so you can successfully examine them on other machines. The filtering controls in the various viewer interfaces can be used to filter allocations by function name and/or module name. Just type to filter (the filter control is colored red if the filter is invalid, and yellow if it is valid).

Building

You'll need Visual C# 2010 to compile Heap Profiler (it requires C# 4). You can use either the Express edition of Visual C# or the retail version. The library dependencies are included as git submodules in the ext folder.