VS2010在调试时将数组/集合数据保存到文件中

cas*_*rle 18 debugging visual-studio-2010

在VS2010中进行调试时,有没有办法将数组/列表/集合数据保存到文件中?

例如,在此代码中:

var addressGraphs = from a in context.Addresses
                    where a.CountryRegion == "Canada"
                    select new { a, a.Contact };

foreach(var ag in addressGraphs) {
   Console.WriteLine("LastName: {0}, Addresses: {1}", ag.Contact.LastName.Trim(),
                     ag.Contact.Addresses.Count());



   foreach(var Address in ag.Contact.Addresses) {
      Console.WriteLine("...{0} {1}", Address.Street1, Address.City);
   }
}
Run Code Online (Sandbox Code Playgroud)

我想在第一个'foreach'行设置断点,然后将'addressGraph'中的数据保存到文件中.

其中'a'包含以下字段:

   int addressID
   string Street1
   string City
   <Ect.>
Run Code Online (Sandbox Code Playgroud)

和"联系"包含以下字段:

   string FirstName
   string LastName
   int contactID
   <Ect.>
Run Code Online (Sandbox Code Playgroud)

我希望该文件包含集合中每个项目的每个字段的值.

我没有看到明显的方法来做到这一点.可能吗?

Mrc*_*ief 28

当您的断点被命中时,打开Immediate窗口并使用Tools.LogCommandWindowOutput将输出转储到文件:

>Tools.LogCommandWindowOutput c:\temp\temp.log
?addressGraphs
>Tools.LogCommandWindowOutput /off
Run Code Online (Sandbox Code Playgroud)

注意:您可以使用Log哪个是别名Tools.LogCommandWindowOutput


更新:>角色是非常重要的.此外,log别名区分大小写.看截图:

在此输入图像描述


小智 6

我也遇到过这样一个问题,但在VS2013中.我必须在调试时保存数组内容.

例如,我需要保存名为"trimmedInput"的双数组内容.我这样做:

  1. 从调试菜单打开QuickWatch窗口(Ctrl + D,Q). 在此输入图像描述

  2. 将您的变量放在Expression中并按下Recalculate Button 在此输入图像描述

  3. 你会看到所有的价值观.现在您可以全部选择它们(Ctrl + A)并复制(Ctrl + C).

  4. 在您喜欢的编辑器中粘贴(Ctrl + V)它们.记事本,例如.并使用它们. 在此输入图像描述

这就是我所知道的简单方法.没有额外的努力.希望我的描述能帮到你!

PS对不起截图上的非英文界面.所有必要的信息都写在文本中.


Dur*_*n81 2

使用此方法可以实现类似的效果:

我构建了一个在所有项目中使用的扩展方法,它是一个通用且更强大的 ToString() 方法,可以显示任何对象的内容。我在此链接中包含了源代码: https ://rapidshare.com/files/1791655092/FormatExtensions.cs

更新: 您只需将 FormatExtensions.cs 放入项目中并更改 FormatExtensions 的命名空间以与项目的基本命名空间一致。因此,当您处于断点时,您可以在监视窗口中键入: myCustomCollection.ToStringExtended()

并将输出复制到任何您想要的位置