我目前正在尝试调试我的Crash-Handler,它是一个外部可执行文件,当我的程序发现未处理的结构化异常时会被调用。我重新编译了崩溃处理程序可执行文件,当我测试时,我收到一条消息:“程序太大而无法适应内存”。
在挖掘了一下之后,我发现这是由我未处理的异常过滤器中的CreateProcess调用引起的。我发现this post表示此错误消息表明可执行文件已损坏,但是如果我从命令行调用CrashHandler.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))
答案 0 :(得分:2)
原来我的一个构建后挂钩是从源控件存储库复制exe,而我在源控件存储库中的文件实际上是pdb。在测试时我直接复制到我正在运行的文件夹,然后钩子会再次复制“损坏的”exe。