【发布时间】: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