Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有一种方法可以从VS中的调试器转储流_C#_Visual Studio_Stream - Fatal编程技术网

C# 有没有一种方法可以从VS中的调试器转储流

C# 有没有一种方法可以从VS中的调试器转储流,c#,visual-studio,stream,C#,Visual Studio,Stream,我正在使用VS2010,在我当前的项目中,我正在使用C#中的许多流。我已经编写了一些流转储实用程序,用于编写特定类型的流以进行调试,但我似乎在调试时遇到了一些问题,需要查看正在调试的流,但我没有将转储调用放在那里。似乎我应该能够以某种方式使用VS转储流,或者告诉它在调试器中对流调用我的转储方法之一。有一个wy来做这个吗 我正在处理的流有一些文本描述一个数据块,然后是该数据块的字节,因此查看描述很有用。我的转储方法通常只转储这些信息,然后跳过blob。也许您可以编写一个可视化工具? MSDN在此处

我正在使用VS2010,在我当前的项目中,我正在使用C#中的许多流。我已经编写了一些流转储实用程序,用于编写特定类型的流以进行调试,但我似乎在调试时遇到了一些问题,需要查看正在调试的流,但我没有将转储调用放在那里。似乎我应该能够以某种方式使用VS转储流,或者告诉它在调试器中对流调用我的转储方法之一。有一个wy来做这个吗


我正在处理的流有一些文本描述一个数据块,然后是该数据块的字节,因此查看描述很有用。我的转储方法通常只转储这些信息,然后跳过blob。

也许您可以编写一个可视化工具?
MSDN在此处解释了如何进行调试:

您可以在调试时使用即时窗口调用转储函数:

MikeDsDumpFxn(whateverStreamIsActiveInThisContext)

如果函数返回一个字符串,它将在即时窗口中打印结果。

在即时窗口中键入:

System.Diagnostics.Debug.WriteLine((new System.IO.StreamReader(stream)).ReadToEnd());

如果流中有二进制数据,可以尝试使用
即时窗口中的以下行将其转储到文件中:

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
属性,则可以使用类似的解决方案:


非常好,这是一个很好的解决方案,允许我将转储函数作为调试程序的一部分。您可能需要
System.Diagnostics.Debug.WriteLine((new System.IO.StreamReader(stream)).ReadToEnd())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)