。我已经写了一些流转储工具,用于编写某些类型的数据流进行调试,但我似乎让整个次绊倒,当我调试,需要寻找到我调试过流,但我没有把我的在那里转储呼叫。看来我应该能够以某种方式转储流只是使用VS或者也许告诉它在调试器中的流上调用我的转储方法之一。有没有这样做?有没有办法来转储从调试器流VS
我与工作流有一些文字描述数据的斑点,然后BLOB的字节,所以在看说明是非常有用的。我的转储方法通常只是将该信息转储出来,然后跳过blob。
。我已经写了一些流转储工具,用于编写某些类型的数据流进行调试,但我似乎让整个次绊倒,当我调试,需要寻找到我调试过流,但我没有把我的在那里转储呼叫。看来我应该能够以某种方式转储流只是使用VS或者也许告诉它在调试器中的流上调用我的转储方法之一。有没有这样做?有没有办法来转储从调试器流VS
我与工作流有一些文字描述数据的斑点,然后BLOB的字节,所以在看说明是非常有用的。我的转储方法通常只是将该信息转储出来,然后跳过blob。
也许你可以写一个展台? MSDN介绍了如何在这里:http://msdn.microsoft.com/en-us/library/e2zc529c.aspx
你可以只使用即时窗口打电话给你的转储功能,而调试:
MikeDsDumpFxn(whateverStreamIsActiveInThisContext)
如果你的函数返回一个字符串,它会在那里打印的结果直接窗口。
键入以下到即时窗口:
System.Diagnostics.Debug.WriteLine((new System.IO.StreamReader(stream)).ReadToEnd());
您可能需要'System.Diagnostics.Debug.WriteLine((新就是System.IO.StreamReader(流))ReadToEnd的());' – KCD 2012-10-28 21:47:24
注意,这将消耗通话,所以你应该知道,你可能不会能够继续当前的调试会话。 – 2014-06-19 15:53:17
如果你有流中的二进制数据,你可以尝试在immediate window
使用下面的线将其倾倒到一个文件:
var lastPos = stream.Position;
stream.Seek(0, SeekOrigin.Begin)
File.WriteAllBytes("filepath.bin", new BinaryReader(stream).ReadBytes((int)stream.Length))
stream.Seek(lastPos, SeekOrigin.Begin)
的显然必须寻求防止改变河流在倾倒时的位置的副作用(在最后一行中恢复)。
如果流不具有Length
属性,您可以使用一个类似的解决方案to the one done here:
var lastPos = stream.Position;
var ms = new MemoryStream();
stream.Seek(0, SeekOrigin.Begin)
stream.CopyTo(ms)
File.WriteAllBytes("filepath.bin", ms.ToArray())
stream.Seek(lastPos, SeekOrigin.Begin)
非常好,这是一个很好的解决方案,让我做我的转储功能是调试器的一部分 – MikeD 2009-11-25 23:01:14