The DebugDiag tool is designed to assist in troubleshooting issues such as hangs, slow performance, memory leaks or memory fragmentation, and crashes in any user-mode process. The tool includes additional debugging scripts focused on Internet Information Services (IIS) applications, web data access components, COM+ and related Microsoft technologies, Sharepoint, and .NET. It provides an extensible object model in the form of COM objects and provides a script host with a built-in reporting framework. It is composed of the following 3 components: a debugging service, a debugger host, and the user interface.
Instructions for Usage:Generating Memory Dumps:
When using DebugDiag, you need to first identify what kind of issue you are troubleshooting (e.g. a crash, hang, slow performance, or memory and handle usage). This step will aid in configuring the tool appropriately to get the right data, and therefore identifying the root cause of the problem and resolving it.Process Crashes
A process crash is usually indicative of an unhandled exception occurring in a process or code running in a process that actively terminates the process. To debug a process crash, start by creating a crash rule against the process(s) in question. Similar to previous debuggers, DebugDiag will attach to a specific process(es) and will monitor the process for one or more types of exceptions or any custom breakpoints that cause the process(es) to terminate unexpectedly. When the crash occurs, a full memory dump file will be created, in the directory specified when setting up the crash rule. Process Hangs or Slow Performance
To debug a process hang, or slow performance use one of the following:
1. Create a performance rule. The performance rule could be based on Performance Counters or HTTP Response Times. This latter is specific to web servers or HTTP-based web services. The Performance Counters rule allows you to capture a series of consecutive userdumps when one or more Performance Counters exceed specified thresholds. The HTTP Response Times rule allows you to either use ETW (specific to IIS web server) or WinHTTP (to ‘ping’ any type of web server or HTTP-based web service) to capture userdumps when the configured timeout is reached.
2. Create a manual memory dump series during the slow or hang state by right-clicking the process name in the processes view and choosing the “Create Dump Series” option.
Then, analyze the resulting .dmp files with CrashHangAnalysis.asp and/or PerfAnalysis.asp (see below).Memory or Handle Usage
To debug memory and handle usage, use one of the following:
1. Create a leak rule against the process in question. The leak monitoring feature will track memory allocations inside the process. Tracking is implemented by injecting a DLL (leaktrack.dll) into the specified process and monitoring memory allocations over time. When configuring a memory and handle leak rule, you can specify memory dump generation based on time or memory usage.
2. Using the “processes” view, right-click the process in question and select the “monitor for leaks” option. When the process has grown to the suspected problem size, manually dump the process by right-clicking on the same process in the processes view and choosing the “Create Full Userdump” option.Analyzing Memory Dumps:
One of the most powerful features of DebugDiag is the ability to analyze memory dumps and generate a report file showing the analysis, along with recommendations to resolve identified problems.
DebugDiag uses “Analysis Scripts” to analyze memory dumps. There are 5 analysis scripts shipped with DebugDiag 1.2 as follows:
|Crash/Hang Analyzers||CrashHangAnalysis.asp||Crash and Hang Analysis with specific reporting for ASP, .net, WCF, IIS and more |
|Memory Pressure Analyzers||DotNetMemoryAnalysis-BETA.asp||Managed Memory Analysis (Beta version)|
|Memory Pressure Analyzers||MemoryAnalysis.asp||Memory Analysis including Leaktrack and heap info reporting|
|Performance Analyzers||PerfAnalysis.asp||Performance analysis for multiple consecutive dumps of the same process|
|SharePoint Analyzers||SharePointAnalysis.asp||Analysis of SharePoint processes |
Additional InformationNew Features in 1.2
DebugDiag 1.2 comes with rich new features and full compatibility with x86 and x64 versions of Windows Vista, Windows 7, Windows 2008 and 2008R2. To install DebugDiag 1.2 on x64 systems, you have to install the x64 version of the tool; this version has the built-in x86 support to debug/analyze x86 processes. Below is a summary of the new features added into the 1.2 release:Analysis:
· .Net 2.0 and higher analysis integrated to the Crash Hang analysis.
· SharePoint Analysis Script.
· Performance Analysis Script.
· .NET memory analysis script (beta).
· Native heap analysis for all supported operating systemsCollection:
· Generate series of Userdumps.
· Performance Rule.
· IIS ETW hang detection.
· .NET CLR 4.0 support.
· Managed Breakpoint Support.
· Report Userdump generation to the Event log.Deployment
· Import/Export of rules and configuration.
· Enterprise deployment support using XCopy and Register.bat. Non-supported items
· x64 userdump analysis on x86 systems.
· Installing x86 DebugDiag on x64 systems.
· Installing DebugDiag 1.2 and 1.1 on the same system.
· 1.2 Memory leak analysis of 1.1 leaktrack.
· Analysis of x86 Userdumps generated by x64 debugger.
Notes about this release:
Uninstall all previous DebugDiag versions before you install DebugDiag 1.2.