Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
swdev:dotnet:debugging [2011/03/25 10:02]
smayr
swdev:dotnet:debugging [2011/08/30 16:34] (current)
smayr [Debugging]
Line 1: Line 1:
 == Debugging == == Debugging ==
 +
 +  * Enable WPF debug output. In Visual Studio, Options > Debugging > Output Window > WPF Trace Settings > Data Binding > All.
 +  * Add a high TraceLevel to your binding: <code csharp>System.Diagnostics.PresentationTraceSources.SetTraceLevel(NewBinding, System.Diagnostics.PresentationTraceLevel.High);</code>
 +  * Run application, and review log in "Output" tab in Visual Studio.
 +  * Add ''System.Diagnostics'' entry to ''app.exe.config'' See:
 +    * [[swdev:dotnet:debugging|Debugging for .NET]]
 +    * [[http://www.thejoyofcode.com/System.Diagnostics_hidden_SourceLevels.aspx|The Joy of Code: System.Diagnostics Hidden SourceLevels]] 
 +    * [[http://msdn.microsoft.com/en-us/library/aa345169.aspx|MSDN: PresentationTraceSources Class]]
 +    * [[http://msdn.microsoft.com/en-us/library/system.diagnostics.presentationtracesources.settracelevel.aspx|MSDN: SetTraceLevels]]
 +    * [[http://msdn.microsoft.com/en-us/library/6w20x90k.aspx|MSDN: EventLog.WriteEntry method]]
 +  * [[http://stackoverflow.com/questions/4026543/is-there-a-good-tool-for-debugging-xamls-databinding-behavior-errors-at-runtim|Tools for Debugging Data Binding at runtime]]
 +  * [[http://bea.stollnitz.com/blog/?p=52|Bea Stollnitz: How can I debug WPF bindings?]]
  
 == Using System.Diagnostics == == Using System.Diagnostics ==
Line 64: Line 76:
 Alternatively, and more flexible: Alternatively, and more flexible:
 <code csharp> <code csharp>
-TraceSource srcMyApp = new TraceSource("srcMyAppp");+TraceSource srcMyApp = new TraceSource("srcMyAppDebug");
 srcMyApp.TraceInformation("Some operation here: Hello World"); srcMyApp.TraceInformation("Some operation here: Hello World");
 srcMyApp.TraceEvent(TraceEventType.Error, 0, "Error: Something failed here."); srcMyApp.TraceEvent(TraceEventType.Error, 0, "Error: Something failed here.");
Line 103: Line 115:
   elog.EnableRaisingEvents = true;   elog.EnableRaisingEvents = true;
   elog.WriteEntry(message);   elog.WriteEntry(message);
 +}
 +</code>
 +
 +Another example (by Microsoft):
 +<code csharp>
 +using System;
 +using System.Diagnostics;
 +using System.Threading;
 +
 +class MySample{
 +
 +    public static void Main(){
 +
 +        // Create the source, if it does not already exist.
 +        if(!EventLog.SourceExists("MySource"))
 +        {
 +             //An event log source should not be created and immediately used.
 +             //There is a latency time to enable the source, it should be created
 +             //prior to executing the application that uses the source.
 +             //Execute this sample a second time to use the new source.
 +            EventLog.CreateEventSource("MySource", "MyNewLog");
 +            Console.WriteLine("CreatedEventSource");
 +            Console.WriteLine("Exiting, execute the application a second time to use the source.");
 +            // The source is created.  Exit the application to allow it to be registered.
 +            return;
 +        }
 +
 +        // Create an EventLog instance and assign its source.
 +        EventLog myLog = new EventLog();
 +        myLog.Source = "MySource";
 +
 +        // Write an informational entry to the event log.    
 +        myLog.WriteEntry("Writing to event log.");
 +
 +    }
 } }
 </code> </code>