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

时间:2009-08-26 08:59:37

标签: visual-studio debugging

在Visual Studio(2008,如果重要的话)中,我是否可以在调试/中断模式下将变量的内容写入文本/ XML文件?

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

我可以浏览这个列表中的成千上万的项目,但是一旦我在应用程序上停止了它就不会持久...这没有明显的上下文选项,但有没有办法,更好方式比手动?或者没有希望,我只需要点击停止,重新设置日志记录功能并再次运行它?

除了尝试点击断点,修改代码并重新编写以创建更好的记录器,有没有办法不丢失内存数据?

5 个答案:

答案 0 :(得分:18)

一种方法是使用即时窗口(菜单调试 - > 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 以获取更多信息。

答案 1 :(得分:3)

感谢Richard's answer,这对我有用。

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

确保C:\Temp存在。

当不以管理员身份运行Visual Studio时,写入文件夹而不是根C:\的原因是避免UnauthorizedAccessException

答案 2 :(得分:2)

我认为我的回答与JamesPickrell的回答几乎相同,但是从立即窗口你也可以这样做:

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

这会将“history”变量的内容输出到名为c:\ temp.txt的文件中。

答案 3 :(得分:0)

我发现将变量另存为json字符串到文件中有用/可演示/可共享。在立即窗口中输入以下内容:

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

答案 4 :(得分:-1)

不确定它支持哪个版本,但您可以简单地将它放在 WATCH 窗口中,然后右键单击复制过去您想要的任何位置。