Das folgende C # -Programm (erstellt mit csc hello.cs
) wird nur Hello via Console!
auf der Konsole und Hello via OutputDebugString
im DebugView-Fenster gedruckt. Ich kann jedoch keinen der System.Diagnostics.*
Anrufe sehen. Warum ist das so?
using System;
using System.Runtime.InteropServices;
class Hello {
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern void OutputDebugString(string message);
static void Main() {
Console.Write( "Hello via Console!" );
System.Diagnostics.Debug.Write( "Hello via Debug!" );
System.Diagnostics.Trace.Write( "Hello via Trace!" );
OutputDebugString( "Hello via OutputDebugString" );
}
}
Sind möglicherweise spezielle Befehlszeilenoptionen erforderlich csc
?
Ich verwende Visual Studio für keine meiner Entwicklungen, dies ist reines Kommandozeilenmaterial.
Antworten:
Wie andere bereits betont haben, müssen Hörer registriert sein, um diese Streams lesen zu können. Beachten Sie auch, dass dies
Debug.Write
nur funktioniert, wenn dasDEBUG
Build-Flag gesetzt ist, währendTrace.Write
es nur funktioniert, wenn dasTRACE
Build-Flag gesetzt ist.Das Setzen der
DEBUG
und / oderTRACE
Flags erfolgt einfach in den Projekteigenschaften in Visual Studio oder indem Sie csc.exe die folgenden Argumente gebenquelle
Während das Debuggen
System.Diagnostics.Debug.WriteLine
im Ausgabefenster angezeigt wird ( Ctrl+ Alt+ O), können SieTraceListener
derDebug.Listeners
Sammlung auch ein hinzufügen , umDebug.WriteLine
Aufrufe anzugeben, die an anderen Speicherorten ausgegeben werden sollen.Hinweis:
Debug.WriteLine
Aufrufe werden möglicherweise nicht im Ausgabefenster angezeigt, wenn die Visual Studio-Option "Alle Texte des Ausgabefensters in das Sofortfenster umleiten" im Menü Extras → Optionen → Debugging → Allgemein aktiviert ist . Um " Extras → Optionen → Debuggen " anzuzeigen , aktivieren Sie das Kontrollkästchen neben " Extras → Optionen → Alle Einstellungen anzeigen ".quelle
Sie müssen ein hinzufügen
TraceListener
, damit sie in der Konsole angezeigt werden.Sie werden im Debug-Modus auch im Visual Studio-Ausgabefenster angezeigt.
quelle
OutputDebugString()
und (Kernel)DbgPrint().
Debug.Write()
wenn die Erfassungseinstellungen "Global Win32" enthalten - was erfordert, dass es im Admin-Modus ausgeführt wird.Zeigen Sie beim Debuggen in Visual Studio das Fenster "Ausgabe" an (Ansicht-> Ausgabe). Es wird dort zeigen.
quelle
Die Diagnosemeldungen werden im Ausgabefenster angezeigt.
quelle
Wenn ich debug.write ("") in den Code schreibe , wird es im " Sofortfenster" ausgegeben , nicht im "Ausgabefenster".
Du kannst es versuchen. Zur Anzeige des Fensters "Sofort" ( Debug → Fenster → Sofort ).
quelle
Die Lösung für meinen Fall lautet:
quelle
Für VB.NET gilt Folgendes. Sie müssen "Debuggen" auswählen UND sicherstellen, dass Sie "Debuggen starten". Dies kann durch Drücken erreicht werden F5.
Außerdem zeigt die Console.WriteLine nur Meldungen an, wenn sie in Ihrem Ausgabefenster als "Release" erstellt wird.
Öffnen Sie, wie bereits erwähnt, das Ausgabefenster mit Ansicht → Ausgabe UND stellen Sie sicher, dass Sie entweder "Erstellen" auswählen, wenn Sie Console.WriteLine-Nachrichten anzeigen möchten, oder "Debug", wenn Sie Debug.WriteLine- oder Trace.WriteLine-Nachrichten anzeigen möchten.
quelle