在Visual Studio(2008,如果重要的话)中,我是否可以在调试/中断模式下将变量的内容写入文本/ XML文件?
情况是我在调试中运行了一个很长的进程,我已经意识到我没有记录关于进程一直监视的事件的足够详细信息,但幸运的是,历史记录仍然可用于变量中代码。
我可以浏览这个列表中的成千上万的项目,但是一旦我在应用程序上停止了它就不会持久...这没有明显的上下文选项,但有没有办法,更好方式比手动?或者没有希望,我只需要点击停止,重新设置日志记录功能并再次运行它?
除了尝试点击断点,修改代码并重新编写以创建更好的记录器,有没有办法不丢失内存数据?
答案 0 :(得分:18)
一种方法是使用即时窗口(菜单调试 - > Windows - > 立即)。在出现的窗口中,您可以使用“?”查询变量的值。
假设您的历史记录变量是一个字符串,您可以通过在即时窗口中键入以下内容来查看其内容:
?history
您可以将输出复制并粘贴到文本文件中,或者让Visual Studio记录所有命令窗口输出。要这样做:
>log "c:\test.log"
?history
>log off
Log
是Tools.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
窗口中,然后右键单击复制过去您想要的任何位置。