1
我目前正在嘗試調試我的Crash-Handler,它是一個外部可執行文件,當我的程序發現未處理的結構化異常時會被調用。我重新編譯了crash-handler可執行文件,當我測試時,我收到一條消息:「程序太大而不適合內存」。CreateProcess():「程序太大,不適合內存」
經過深入研究,我發現這是由我的未處理的異常過濾器中的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))