CreateProcess():“程序太大而不适合内存”

时间:2011-03-23 03:22:06

标签: winapi createprocess

我目前正在尝试调试我的Crash-Handler,它是一个外部可执行文件,当我的程序发现未处理的结构化异常时会被调用。我重新编译了崩溃处理程序可执行文件,当我测试时,我收到一条消息:“程序太大而无法适应内存”。

在挖掘了一下之后,我发现这是由我未处理的异常过滤器中的CreateProcess调用引起的。我发现this post表示此错误消息表明可执行文件已损坏,但是如果我从命令行调用CrashHandler.exe,则不会出现此类错误。

其他信息:

  • 我试过重建我的 应用程序和崩溃处理程序 调试和调用多次 发布模式。
  • 我尝试给正在运行的线程提供2个数量级的堆栈空间。
  • 我在已经使用它的另一个应用程序中测试了相同的CrashHandler.exe,并且没有任何问题。
  • 我尝试使用之前版本的exe,但效果相同。
  • 重新启动系统。

我对CreateProcess的调用:

//Fire off the Handler
//HandlerArgs = "CrashHandler.exe arg1 arg2 arg3 etc..."
if(CreateProcess(NULL, HandlerArgs, NULL, NULL, TRUE, CREATE_PRESERVE_CODE_AUTHZ_LEVEL | CREATE_SUSPENDED,
                 NULL, NULL, &StartupInfo, &NewProcessHandle))

1 个答案:

答案 0 :(得分:2)

原来我的一个构建后挂钩是从源控件存储库复制exe,而我在源控件存储库中的文件实际上是pdb。在测试时我直接复制到我正在运行的文件夹,然后钩子会再次复制“损坏的”exe。