Look at ProcDump Tool for Memory Dump Collection
In this article, we will look into ProcDump, its purpose and how to use it. We can use this tool for collecting a memory dump of an application based on CPU usage. We can download the tool from here. Let's install it and explore the functionality. ProcDump is a command line utility, that is helpful in collecting a full/mini memory dump based on its CPU usage or unhandled exceptions. This tool is handy in troubleshooting High CPU issues on an application, it can be ASP.NET (w3wp.exe) or Win Forms or WPF. Occasionally, our applications might spike the CPU. In this kind of scenarios, it's hard to collect a memory dump exactly at the time of spike. Using this tool, we can configure rules to collect a dump when it reaches certain CPU usage. Let's open ProcDump in a command prompt by going to its installation path:
We will now explore options available for collecting a dump.
Command: Procdump processname/processId
Purpose: it collects a mini dump (small in size) having only thread/handle information; the stack trace is based on the process name.
Command: Procdump -ma processname/processId
Purpose: it collects a full user dump based on the process name/id.
Command: procdump w3wp.exe -c 20 -ma
Purpose: it collects a full user dump of w3wp.exe, when its CPU usage exceeds 20%.
Command: procdump w3wp.exe -p "\Processor(_Total)\% Processor Time" 5 -n 2
Purpose: it collects two full user dumps of w3wp.exe when the System CPU usage exceeds 5%.
Command: procdump -ma -e notepad.exe
Purpose: it collects a full user dump of notepad.exe, when it throws an unhandled exception.
Command: procdump -e 1 -f "" notepad.exe
Purpose: it shows the exception codes of notepad.exe without collecting any dump.
By using this tool, we can collect a dump based on CPU usage, exceptions or on a performance counter (using the -p option) value like Processor Time, Handle Count and so on. Once we have a dump, it can be analyzed using the Debug Diag or WinDbg tools.