从调试器将System.IO.MemoryStream刷新到二进制文件

时间:2017-06-29 21:21:21

标签: c# .net visual-studio debugging visual-studio-2015

我正在调试只有dllpdb个文件的库。我可以看到源代码和切换断点,但我无法修改代码。 有一种创建System.IO.MemoryStream对象的方法,我希望将刷新为到文件。这个stream有正长度和位置> 0,我可以通过调用从调试器输出到屏幕:

new System.IO.StreamReader(stream).ReadToEnd();

但是我需要将它输出到一个文件,因为它包含二进制数据,我需要文件进行十六进制比较。为此,我在调试器监视选项卡中执行:

stream.Position = 0
stream.CopyTo(new System.IO.FileStream("file.bin", System.IO.FileMode.Create, System.IO.FileAccess.Write))
stream.Position = 0
stream.CopyTo(new System.IO.FileStream("file2.bin", System.IO.FileMode.Create, System.IO.FileAccess.Write), (int)stream.Length)

在这两种情况下都会创建空文件。

我正在调试的库有这样的用法:

using System.Globalization;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Xml;

1 个答案:

答案 0 :(得分:1)

您可以在快速监视窗口中使用单个命令将MemoryStream转储到文件中:

File.WriteAllBytes(@"C:\file.bin", stream.ToArray())