Minidumper is a command-line tool that can capture dump files of .NET processes in three modes: minimal, which is enough just for basic triage; heap, which includes managed heap information and other data required to diagnose more intricate .NET issues; and full, which creates a complete dump file.
What makes Minidumper interesting is the heap mode. For large applications, especially with a lot of modules or when unmanaged memory and code are involved, dumps generated by the heap mode can be 5x or 10x smaller than full memory dumps, but will still allow complete investigation of many .NET issues by tools like Visual Studio and WinDbg (SOS).
Head over to the releases section to download precompiled binaries if that's your thing.
Also included is a stand-alone library (DumpWriter) that can be added to any project to capture dumps of arbitrary processes. The DumpWriter project also contains the full interop signatures for the Win32
MiniDumpWriteDump API and all associated data structures, including callback input and output structures.
- To create dumps of 32-bit processes, make sure to use the 32-bit version of the application -- and vice versa for 64-bit.
- MiniDumper has gone through very minimal testing. Although it is unlikely that it will cause any damage to the target process (if dump generation fails, MiniDumper exits and the target continues running), but YMMV.
--asyncoption will not necessarily speed up dump generation if you are using a fast disk.
The command line options resemble those from procdump (not all features are yet implemented) so if you are familiar with that tool you should find yourself easily in minidumper.
-m Required. Create a dump file, second paramer: -mm minidump enough to diagnose crashes and display call stacks. -mh dump file with the CLR heap, but without module code or unmanaged memory contents -ma complete dump file with the full memory address space --async Write dump chunks to disk asynchronously. Reduces process suspension time at the expense of higher memory usage. -e Write a dump when the process encounters an unhandled exception. Include the 1 to create dump on first chance exceptions, include the 2 to create dump on second chance exceptions. -l Display the debug logging of the process + diagnostics info from the minidumper. --maxmem Memory commit threshold in MB at which to create a dump. --minmem Trigger when memory commit drops below specified MB value. -f Filter on the content of exceptions and debug logging. Wildcards (*) are supported. -x Launch the specified image with optional arguments. -n (Default: 1) Number of dumps to write before exiting. -t Write a dump when the process terminates. -c Start the process in a new console window. --help Display this help screen. --version Display version information. value pos. 0 Required. PID or process name value pos. 0 Arguments for the process to start