Debugging in C# mit Sharpdevelop

Die Ausgabe der Meldungen erfolgt im Fenster „Ausgabe“; dieses Fenster kann man isoliert auf den Bildschirmrand ziehen und so während des Debuggens die Meldungen kontrollieren.



http://support.microsoft.com/kb/815788#5


/*

* Created by Kner

* Testen der Debugmethoden

*/

#define DEBUG


using System;

using System.Drawing;

using System.Windows.Forms;

using System.Diagnostics;

namespace debug

{

class MyClass

{

public MyClass(int i)

{

this.i = i;

}

// Conditional: wenn DEBUG definiert mit #define DEBUG definiert ist,

// erfolg ein Aufruf, sonst nicht

[Conditional("DEBUG")]

public void VerifyState()

{

Debug.Assert(i==1, "Bad State"); // es wird erwartet, dass die

// Bedingung true ist, sonst Programmunterbrechung und Meldung

}

int i = 0;

}



public class MainForm : System.Windows.Forms.Form

{

private System.Windows.Forms.Button button1;

public MainForm()

{

InitializeComponent();

}

[STAThread]

public static void Main(string[] args)

{ Application.Run(new MainForm());

}

private void InitializeComponent() {

...

}

void Button1Click(object sender, System.EventArgs e)

{

MyClass c = new MyClass(1);

c.VerifyState();

}

void Button2Click(object sender, System.EventArgs e)

{

/* System.Console.Out (das Fenster "Ausgabe" in Sharpdevelop

* empfängt die Meldungen von Debug.Write...

*/

// Methode 1 Ausgabe auf der Konsole

TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);

Debug.Listeners.Add(tr1);

Debug.WriteLine("1. Zeile");

Debug.WriteLineIf(true, "2. Zeile, wenn true");

Debug.Print("3. Zeile");

Debug.Indent(); //Einrücken

Debug.WriteLine("4. Zeile");

Debug.Unindent(); //Ausrücken

Debug.Flush(); //Debug-Meldungspuffer leeren

Debug.Listeners.Remove(tr1);

// Methode 2 Ausgabe auf der Konsole

//Debug.Listeners.Add(new System.Diagnostics.ConsoleTraceListener());

Debug.WriteLine("5. Zeile");

// Methode 2 Ausgabe auf der Konsole und im Logfile

TextWriterTraceListener tr2 = new TextWriterTraceListener(@"c:\temp\xxx1.log");

Debug.Listeners.Add(tr2);

Debug.WriteLine("diese ZEile landet auch im Logfile");

Debug.Flush(); //Debug-Meldungspuffer leeren

Debug.Listeners.Clear(); //alle Debuglisteners löschen

}

...