当我的应用程序崩溃时,它会生成一个小型转储以允许事后调试。我使用选项 MiniDumpWithIndirectlyReferencedMemory 和 MiniDumpWithPrivateReadWriteMemory。
直到最近转储文件的大小开始超过 500MB 时,一切都运行良好。当我想开始调试那个大小的转储时,Visual Studio 向我抛出以下错误。
“没有足够的存储空间来处理这个命令”
我有 WinXP 32 位,其中有 4GB RAM,我使用的内存不到 1GB。根据 VS2008 在此过程中的内存使用情况,它应该有足够的可寻址空间。
我不想做的事情:
- 破解 WinXP 以获得更多内存:该应用程序只会不断增长,因此这只能暂时起作用。这是我发现的可能操作的列表: http://www.msfn.org/board/topic/62001-not-enough-storage-is-available-to-process-this-command/
- 切换到 64 位操作系统
- 省略 MiniDumpWithPrivateReadWriteMemory 选项
那我应该怎么解决呢?
- 从转储中省略一些 dll?将包含的内存从不同转储的 dll 组中拆分出来?关于如何执行此操作的任何想法? (如果可能的话)
- ...?
最佳答案
您可以尝试使用 Debugging Tools for Windows 中的 WinDbg包,看看它是否比 Visual Studio 更好地管理内存。但是我建议尝试 64 位操作系统,即使您不想这样做。在这些日子和时代,您还应该将您的应用程序作为 native 64 位 Windows 应用程序提供,为此您无论如何都需要 64 位 Windows。
关于c++ - 我的小型转储变得太大而无法被 Visual Studio 加载,我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245039/