Kann ich Trace-Nachrichten in Visual C # 2008 Express in einem separaten Fenster ausgeben?

8

Konsolen-, Debug- und Trace-Nachrichten scheinen alle im "Ausgabe" -Fenster angezeigt zu werden, was in den meisten Fällen in Ordnung ist, aber ich möchte meine Trace-Nachrichten getrennt anzeigen lassen (damit sie nicht mit allem verschachtelt sind) sonst). Gibt es eine Möglichkeit, dies zu tun, ohne in eine Datei / ein Protokoll zu schreiben?

    
Pwninstein 24.03.2010, 12:57
quelle

2 Antworten

4

Sicher, standardmäßig werden Schreibvorgänge im Ausgabefenster mit dem DefaultTraceListener protokolliert Dies ist eine Implementierung der Klasse TraceListener .

Um in eine separate Ausgabe zu schreiben, müssen Sie entweder eine der vorinstallierten Alternativen TraceListener s verwenden oder Ihre eigenen implementieren (mindestens Write() und WriteLine() behandeln und dann Ihren Listener registrieren in Ihrer Konfigurationsdatei.

    
STW 09.07.2010 17:27
quelle
2

Es gibt nur eine Option in VS, um die Ausgabe in einem anderen Fenster zu erhalten: Extras + Optionen, Debugger, Allgemein, "Leite alle Ausgabefenster in das Direktfenster um". Das wird aber wahrscheinlich nicht tun, was Sie wollen.

Es gibt keine guten Optionen für die Ausgabe in ein VS-Fenster. Der einzige Mechanismus ist die Windows OutputDebugString () - API-Funktion, mit der der Debugger Nachrichten anzeigen kann. Das wird bereits vom DefaultTraceListener verwendet. Der Visual Studio-Hostprozess unterstützt die Weiterleitung der Console.Write / Line () - Ausgabe an das Ausgabefenster. Der Mechanismus, mit dem es funktioniert, ist mir unklar, abgesehen davon, dass der Hosting-Prozess eine benutzerdefinierte gehostete Version der CLR ist. Nicht etwas, das du angehen willst, vorausgesetzt, es ist sogar möglich, es zu ersetzen.

Bei weitem der praktischste Ansatz besteht darin, einfach ein eigenes Fenster zur Anzeige der Trace-Ausgabe zu erstellen, indem Sie Ihren eigenen Trace-Listener verwenden. Einfach genug, um mit einer Windows Forms-Formularklasse zu arbeiten, die eine mehrzeilige TextBox enthält. Wie praktisch das ist, hängt von der Art Ihrer Haupt-EXE ab. Oder verfolgen Sie eine Datei und verwenden Sie einen Dateibetrachter, der schlau genug ist, um Aktualisierungen der Datei zu sehen. Ich benutze Fern.

Oh, und da ist SysInternals DebugView-Dienstprogramm . Es snoops auf OutputDebugString () Text.

    
Hans Passant 11.07.2010 21:25
quelle

Tags und Links