2014-11-06 32 views
7

Ich versuche, ein C# /. Net-Programm in Visual Studio 2010 zu debuggen, aber es ist Timing-empfindlich, so dass Breakpoints es versauen. Also möchte ich nur bestimmte Ereignisse und ihre relativen Zeiten protokollieren und sie beobachten, während mein Programm läuft.Visual Studio Debug-Protokoll (wie Logcat in Android)?

Verfügt Visual Studio (oder C# oder .Net) über eine Möglichkeit zum Schreiben in eine Protokolldatei, die Visual Studio als ein Debug-Fenster anzeigen kann?

Als ich in Eclipse Android Entwicklung tun kann ich die Vorteile ihrer Log-Klasse nehmen und setzen Sie Linien, wie dies in meinem Code aussieht:

Log.d("Label1", "Hit checkpoint X"); 

Und sie werden zusammen mit der Zeit/Datumsstempel in der LogCat erscheinen Fenster, das zusammen mit anderen Fenstern in Eclipse angezeigt wird.

Was ist dem Visual Studio 2010 am nächsten?

+0

Sie haben schnell dort in Visual Studio zu sehen –

Antwort

6

Sie können einen Haltepunkt festlegen, der nicht bricht, sondern stattdessen eine Protokollnachricht ausgibt. Setzen Sie einfach einen Haltepunkt, klicken Sie mit der rechten Maustaste auf den Haltepunkt und wählen Sie "When Hit ...".

Von diesem Dialog wählen Sie „eine Meldung drucken“ und „continue Ausführung“

Dialog screenshot

+0

Wo erscheinen die Nachrichten? – user316117

+0

Im Ausgabefenster (Ansicht -> Ausgabe) – heavyd

+0

Gibt es eine Möglichkeit, den Inhalt lokaler Variablen in die Nachricht einzubetten oder anzuzeigen? – user316117

2

Es gibt nicht wirklich etwas in genau wie logcat gebaut ist, aber es gibt viele Logging-Frameworks, die Sie verwenden können, .

Persönlich möchte ich NLog verwenden und ein UDP-Ziel für die Rückverfolgung/Debugging in meiner Konfigurationsdatei zusammen mit einer Regel, um alle Logger an das Ziel zu leiten. Ich denke, dass NLog einfacher zu benutzen ist als Log4Net (der .NET Port von Log4j). Sobald Sie dies tun, können Sie einen Logger vom Manager erstellen und die Logger wie LogCat in android nennen:

Logger logger = LogManager.GetLogger("MyClassTag"); 

logger.Trace("Something to log"); 
logger.Debug("Something to log"); 
logger.Info("Something to log"); 
logger.Warn("Something to log"); 
logger.Error("Something bad to log", exception); 
logger.Fatal("Something bad to log", exception); 

Für die UDP-Protokollierung Pakete hören ich Log2Console verwenden, das mich sie erlaubt, zu sehen wie logcat Betrachter android .

+0

Lassen Sie mich wissen, wenn Sie Hilfe brauchen, um dies einzurichten. Es ist ziemlich einfach, sobald Sie es bekommen, aber es hat ein bisschen eine Lernkurve. – JNYRanger

+0

Das scheint eine Menge zusätzlicher Arbeit und Overhead zu sein, die Werkzeuge von Drittanbietern zu verwenden und Sachen in die Konfigurationsdatei zu legen. Ich bin überrascht, dass eine ausgereifte Entwicklungsumgebung wie Visual Studio und .Net diese Funktion nicht integriert hat. Heavyds Antwort ist ein bisschen näher an dem, was ich brauche, aber ich habe dir +1 für deine Mühe gegeben. – user316117

+0

@ user316117 Ja, es ist ein bisschen überraschend und ich bin kein großer Fan der Methode in Heavyds Antwort, nur weil es so begrenzt ist. Ich sehe jedoch völlig klar, dass es als etwas schwerfällig angesehen werden kann, aber sein Fußabdruck ist nicht allzu schlecht. Es ist ein sehr schönes Framework, das ziemlich einfach zu verwenden ist, sobald Sie diese einzelne Konfigurationsdatei (nur ein bisschen XML) eingerichtet haben, mit der Sie genau das tun können, was Sie mit Logcat tun. – JNYRanger

Verwandte Themen