2009-08-26 26 views
7

在調試/中斷模式下,我可以在Visual Studio(2008年)中將方法的變量寫入文本/ XML文件嗎?將觀看的Visual Studio變量輸出到文件

這種情況是,我有一個很長的進程在調試中運行,我意識到已經太遲了,我沒有記錄有關進程已經監視的事件的足夠詳細信息,但幸運的是歷史記錄仍然可用在代碼中。

我可以瀏覽列表中的數以萬計的項目,但是一旦我停止了應用程序,它就不會持續......沒有明顯的上下文選項,但有沒有辦法,比手動更好的方式?或者是沒有希望,我只需要停下來,重新設置日誌記錄功能並再次運行該事件?

除了嘗試命中斷點,修改代碼並重新編寫以創建更好的記錄器之外,有沒有一種不會丟失內存數據的方法?這樣做是使用即時窗口

回答

17

的一種方式(菜單調試 - >的Windows - >立即)。在出現的窗口中,您可以使用「?」查詢變量的值。

假設你的歷史變量是你在即時窗口中鍵入以下查看其內容的字符串:

?history 

您可以複製,並從那裏輸出粘貼到文本文件或可替換地問Visual Studio中記錄所有命令窗口輸出。要做到這一點類型:

>log "c:\test.log" 
?history 
>log off 

LogTools.LogCommandWindowOutput一個別名,接受下列參數:

Tools.LogCommandWindowOutput [filename] [/on|/off] [/overwrite] 

退房MSDN文章Log Command Window Output Command以獲取更多信息。

我希望有幫助。

+0

非常有幫助,謝謝! – Gaz 2011-08-03 12:54:34

+0

請記住在「?」之間添加空格和「歷史」 – Ning 2016-12-12 14:12:42

2

我想,我的回答幾乎是一樣JamesPickrell的,但是從即時窗口,你也可以做這樣的事情:

My.Computer.FileSystem.WriteAllText("c:\temp.txt",history,True) 

這將輸出「歷史」變量的內容到名爲c:\ temp.txt的文件。

3

感謝Richard's answer,這對我有用。

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

確保C:\Temp存在。

寫入文件夾而不寫入根目錄C:\的原因是,在未以管理員身份運行Visual Studio時,應避免使用UnauthorizedAccessException

相關問題