Steps to Log all .net Exceptions to a Log file with Debug Diag 2.0

 

 

Sometimes it's good to know what exceptions a process like w3wp.exe is throwing. ASP.net is pretty good about making its complaints known in the form of exceptions.  Many or perhaps most exceptions can be ignored.  But if you're trying to troubleshoot a mysterious problem that isn't leaving clues in the event logs, this may be a good way to begin to unravel the problem. Sometimes you can see them logged in the Application event log—but usually not. Sometimes you can see them in the ULS logs of SharePoint servers—but usually not. You could get the developer can add some additional instrumentation to the code to log the exceptions to a log file. Or you might use Todd Carter's SNAP tool to see what .net exceptions are being thrown. Or you can, as I'll suggest here, try to use Debug Diagnostics 2.0 to log all .net exceptions to its log file while reproducing a problem.  

 

Install DebugDiag 2.0 on the server. Location: http://debugdiag.com

If you can't get permission to install it with the .msi, consider the xcopy option here.

 

Launch DebugDiag 2.0 Collection

Confirm that "Crash" is selected as the rule type and click NEXT

Player that I am in the SharePoint universe, I tend to focus on a specific w3wp.exe that corresponds to a specific IIS Application Pool.

Assuming you know which Application Pool to focus on, select "A specific IIS web application pool."

Select the Application Pool in focus and click NEXT

 

For good measure I like to log some of the native code exceptions (non-.net) as well as the managed/.net exceptions.

SharePoint uses both native and managed code. This will help give some insight into the native side.

So change action type to "log stack trace" and change action limit to a high number (like 9999 or 999999).

Click the EXCEPTIONS button

 

Click the ADD EXCEPTION button

 

On the left side, select CLR (.NET) 1.0 – 3.5 Exception

On the right side, set Action Type to "Log Stack Trace" and Action Limit to a high number (like 9999 or 99999)

Click OK

 

 

Click the SAVE&CLOSE button

 

Click NEXT

 

Feel free to change the Rule Name to something like "Exception logging for Application Pool XYZ" if you please.

Feel free to change the rule output location.

Click NEXT

 

Place a bullet beside "Do not activate the rule at this time" and click FINISH.

If you want to have a "baseline" to have a record of which exceptions are "normal," right-click the rule, activate it, generate some activity on the website without duplicating the problem you're hoping to troubleshoot, deactivate the rule, and then proceed with the next steps.

 

It's probably a good idea to get additional debug information added to the log file.

To do so, expand the tools menu, select Options and Settings

 

Place a checkmark beside "Enable raw debugger logs. Includes debug output and engine messages."

Click OK

 

Get everything as ready as possible to reproduce the problem. If possible, get to the point where you are one simple mouse-click away from reproducing your problem.

When you're ready to reproduce the problem, right-click your rule and activate it.

 

Reproduce your problem quickly

After you see your symptom or error message in the browser, deactivate the rule.

 

Find your new log files by clicking the icon of the manila folder. This will open the folder C:\Program Files\DebugDiag\Logs

 

The file you're looking for may have a name that looks something like this:

w3wp__DefaultAppPool__PID__4840__Date__07_19_2013__Time_04_02_18PM__81__Log.txt

 

If your application is throwing several exceptions every second, doing this type of logging can really bog down the machine. Beware. And note these cool new features in 2.0 from the Tools > Options and Settings > Crash Rule Preferences tab. . .

 

 

 

 

More details here: http://blogs.msdn.com/b/debugdiag/archive/2013/10/02/did-you-know.aspx

 

 

 

 

 

 

Additional keywords:

 

System.InvalidCastException

System.OutOfMemoryException

System.IO.FileNotFoundException

System.NullReferenceException

System.CannotUnloadAppDomain

System.Threading.SynchronizationLock

System.InvalidOperationException

System.OverflowException

System.Data.SqlClient.SqlExeption

System.Data.VersionNotFoundException

System.ArgumentException

System.ExecutionEngineException

System.ArgumentOutOfRangeException

System.IndexOutOfRangeException

System.Net.WebException

System.Security.SecurityException