Gibt eine überwachte Visual Studio-Variable in eine Datei aus

7

Gibt es eine Möglichkeit in Visual Studio (2008, wenn es wichtig ist), dass ich im Debug / Break-Modus den Inhalt einer Variablen in eine Text / XML-Datei schreiben kann?

Das Szenario ist, dass ich einen langen Prozess im Debug laufen habe und ich zu spät erkannt habe, dass ich nicht genug Details über die Ereignisse protokolliert habe, die der Prozess überwacht hat, aber zum Glück ist noch eine Historie innerhalb einer Variablen verfügbar der Code.

Ich könnte durch die Zehntausende von Elementen in dieser Liste gehen, aber es wird nicht bestehen bleiben, sobald ich auf die Anwendung stoppe ... es gibt keine offensichtliche Kontextoption dafür, aber gibt es eine Möglichkeit, eine bessere Weg als Handbuch? Oder gibt es keine Hoffnung und ich muss nur stoppen, die Logging-Funktion neu toolen und das Ding erneut ausführen?

Abgesehen von dem Versuch, einen Haltepunkt zu treffen, den Code ändern und neu schreiben, um einen besseren Logger zu erstellen, gibt es eine Möglichkeit, diese In-Memory-Daten nicht zu verlieren?

    
Unsliced 26.08.2009, 08:59
quelle

3 Antworten

17

Eine Möglichkeit wäre, das unmittelbare Fenster zu verwenden (Menü Debug - & gt; Windows - & gt; Sofort ). In dem nun erscheinenden Fenster können Sie das "?" um den Wert einer Variablen abzufragen.

Angenommen, Ihre Verlaufsvariable ist eine Zeichenfolge, deren Inhalt Sie anzeigen, indem Sie im folgenden Fenster Folgendes eingeben:

%Vor%

Sie können die Ausgabe von dort in eine Textdatei kopieren und einfügen oder alternativ Visual Studio dazu auffordern, alle Ausgaben des Befehlsfensters zu protokollieren. Um dies zu tun:

%Vor%

Log ist ein Alias ​​für Tools.LogCommandWindowOutput und akzeptiert die folgenden Parameter:

%Vor%

Sehen Sie sich den MSDN-Artikel Befehlsausgabe des Befehls "Protokoll" an für weitere Informationen.

Ich hoffe, das hilft.

    
JamPickle 26.08.2009, 10:01
quelle
3

Danke an Richards Antwort , das funktioniert für mich.

System.IO.File.WriteAllBytes(@"c:\Temp\temp.txt", myVar);

Stellen Sie sicher, dass C:\Temp existiert.

Der Grund für das Schreiben in einen Ordner und nicht für den Stamm C:\ ist UnauthorizedAccessException zu vermeiden, wenn Visual Studio nicht als Administrator ausgeführt wird.

    
angularsen 16.11.2015 22:34
quelle
2

Ich denke, dass meine Antwort ziemlich genau der von JamesPickrell entspricht, aber aus dem Immediate Window könnte man auch so etwas machen:

%Vor%

Dies würde den Inhalt der Variable "history" in eine Datei namens c: \ temp.txt ausgeben.

    
Richard Lucas 26.08.2009 10:16
quelle

Tags und Links