【问题标题】:CreateProcess(): "Program too big to fit in memory"CreateProcess():“程序太大而无法放入内存”
【发布时间】:2011-03-23 13:14:43
【问题描述】:

我目前正在尝试调试我的 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))

【问题讨论】:

    标签: winapi createprocess


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2011-09-09
      • 2015-11-18
      • 2014-01-08
      • 2016-02-08
      • 2014-10-11
      相关资源
      最近更新 更多