J'essaye actuellement de déboguer mon Crash-Handler, c'est un exécutable externe qui est appelé quand mon programme trouve une exception structurée non gérée. J'ai recompilé l'exécutable crash-handler, et quand j'ai testé, j'ai reçu un message: "Programme trop grand pour tenir dans la mémoire". Après avoir cherché un peu, j'ai découvert que cela était provoqué par l'appel CreateProcess dans mon filtre d'exception non gérée. J'ai trouvé this post qui dit que ce message d'erreur indique que l'exécutable est corrompu, cependant si j'appelle le CrashHandler.exe de la ligne de commande, je n'obtiens pas une telle erreur.CreateProcess(): "Programme trop grand pour tenir dans la mémoire"
Autres informations:
- J'ai essayé la reconstruction de mon application et le crash-gestionnaire plusieurs fois dans les deux débogage et mode de déclenchement.
- J'ai essayé de donner au thread courant 2 ordres de grandeur plus d'espace de pile.
- J'ai testé le même CrashHandler.exe dans une autre application qui l'utilisait déjà, et il n'y avait aucun problème.
- J'ai essayé d'utiliser une version antérieure de l'exe qui fonctionnait avant, mais avec le même résultat.
- Redémarrage du système.
Mon appel à 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))