Le Microsoft Debugging Toolkit de Microsoft est livré avec un tel utilitaire, appelé ADPlus. ADPlus est un outil de ligne de commande (il s'agissait d'un script vb glorifié apparemment) qui fait un tas de choses. Mais vous et moi nous intéressons à obtenir le callstack d'un processus qui est mort. AdPlus peut être configuré pour capturer l'appel d'un processus externe lorsqu'il rencontre une exception non gérée.
La syntaxe est comme ceci:
ADPlus -p <process id> -crash -o <output path>
où
-p est l'argument où vous passez l'ID du processus. Vous pouvez obtenir ceci de l'explorateur de processus à TList (je pense). Il existe d'autres arguments qui vous permettent de spécifier le nom du processus, mais vous devrez le rechercher vous-même.
-crash est de lui dire de générer un minidump lorsqu'il se bloque, ou rencontre une exception non gérée.
-o est le chemin d'accès à un répertoire dans lequel vous souhaitez enregistrer le minidump Ce qu'ADPlus va faire, c'est alors créer un sous-répertoire qui incorpore le nom du processus et un horodatage.
Ensuite, vous pouvez exécuter votre application, et quand elle se bloque, ADPlus va créer le minidump, puis votre processus se terminera.
La boîte à outils de débogage Microsoft fait désormais partie de l'installation de Windows SDK. Vous allez ici pour le trouver:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
Cliquez sur le lien de téléchargement pour télécharger une petite application qui va installer à partir du Web la chose. L'installateur vous donnera beaucoup d'options pour différents composants à installer. Vous pouvez ignorer la plupart d'entre eux et installer uniquement la boîte à outils de débogage.
Etes-vous sûr que sys.exit() l'appelle et ne se fait pas tuer par oom ou autre chose? – Falmarri