2

当我的应用程序崩溃时,它会生成一个小型转储以允许事后调试。我使用选项 MiniDumpWithIndirectlyReferencedMemory 和 MiniDumpWithPrivateReadWriteMemory。

直到最近,当转储文件的大小开始超过 500MB 时,这一切都很好。当我想开始调试该大小的转储时,Visual Studio 会向我抛出以下错误。

“没有足够的存储空间来处理这个命令”

我有 WinXP 32 位,其中有 4GB 的 RAM,其中我使用的内存少于 1GB。根据 VS2008 在此过程中内存的经济性,它应该有足够的可寻址空间。

我不想做的事情:

那么我应该如何解决这个问题呢?

  • 从转储中省略一些dll?通过不同的转储将包含的内存从 dll 组中拆分出来?关于如何做到这一点的任何想法?(如果这是可能的)
  • ...?
4

2 回答 2

1

您可以尝试使用Debugging Tools for Windows包中的 WinDbg,看看它是否比 Visual Studio 管理内存的效果更好。但是,我建议尝试 64 位操作系统,即使您不想这样做。在这些日子和时代,您也应该将您的应用程序作为本机 64 位 Windows 应用程序提供,为此您无论如何都需要 64 位 Windows。

于 2011-03-09T11:44:18.897 回答
0

我在使用 Windows 7 64 位的 VS2010 上遇到了同样的问题。尝试加载使用 MiniDumpWithPrivateReadWriteMemory 集创建的任何转储失败,并显示“没有足够的存储空间来处理此命令”。

我认为这实际上不是内存问题,因为使用 MiniDumpWithFullMemory 打开转储工作正常,并且实际上会创建更大的转储。

这似乎是 Visual Studio 的一个错误,令人失望的是它在以后的几个版本中仍然存在。

于 2012-12-07T18:25:25.420 回答