Visual studio 将监视的Visual Studio变量输出到文件

Visual studio 将监视的Visual Studio变量输出到文件,visual-studio,debugging,Visual Studio,Debugging,在VisualStudio(2008,如果有关系的话)中,有没有一种方法可以在调试/中断模式下将变量的内容写入文本/XML文件 这种情况是,我在调试中运行了一个很长的进程,我意识到我没有记录进程所监视的事件的足够详细信息,但幸运的是,代码中的变量中仍然有历史记录 我可以浏览这个列表中的数万个项目,但一旦我点击应用程序上的“停止”,它就不会继续存在了。。。没有明显的上下文选项,但有没有比手动更好的方法?还是没有希望,我只需要点击停止,重新插入日志功能,然后再次运行 除了尝试命中断点、修改代码并重新

在VisualStudio(2008,如果有关系的话)中,有没有一种方法可以在调试/中断模式下将变量的内容写入文本/XML文件

这种情况是,我在调试中运行了一个很长的进程,我意识到我没有记录进程所监视的事件的足够详细信息,但幸运的是,代码中的变量中仍然有历史记录

我可以浏览这个列表中的数万个项目,但一旦我点击应用程序上的“停止”,它就不会继续存在了。。。没有明显的上下文选项,但有没有比手动更好的方法?还是没有希望,我只需要点击停止,重新插入日志功能,然后再次运行


除了尝试命中断点、修改代码并重新写入以生成更好的记录器之外,还有没有办法不丢失内存中的数据?

一种方法是使用即时窗口(菜单Debug->Windows->immediate)。在出现的窗口中,您可以使用“?”查询变量的值

假设历史变量是字符串,则可通过在即时窗口中键入以下内容查看其内容:

?history
您可以将输出从那里复制并粘贴到文本文件中,或者要求VisualStudio记录所有命令窗口输出。要执行此操作,请执行以下操作:

>log "c:\test.log"
>? history
>log off
Log
工具的别名。LogCommandWindowOutput
并接受以下参数:

Tools.LogCommandWindowOutput [filename] [/on|/off] [/overwrite]
查看MSDN文章了解更多信息。

我认为我的答案与JamesPickrell的答案几乎相同,但在即时窗口中,您也可以这样做:

My.Computer.FileSystem.WriteAllText("c:\temp.txt",history,True)
这将把“history”变量的内容输出到一个名为c:\temp.txt的文件中。

多亏了,这对我来说是可行的

System.IO.File.writealBytes(@“c:\Temp\Temp.txt”,myVar)

确保
C:\Temp
存在


写入文件夹而不是根
C:\
的原因是为了避免在未以管理员身份运行Visual Studio时发生
未经授权的访问异常。

我发现将变量作为json字符串保存到文件中很有用/说明性/共享性。在即时窗口中输入以下内容:

string jsonedVariable = Newtonsoft.Json.JsonConvert.SerializeObject(VARIABLE);
System.IO.File.WriteAllText(@"C:\FILENAME.json", jsonedVariable);

不确定支持哪个版本,但您只需将其放在
WATCH
窗口中,然后右键单击“复制过去”即可。

记住在“?”和“历史记录”之间添加空格