2009-09-30 9 views
4

Nous avons un gestionnaire de plantage in-proc qui utilise MiniDumpWriteDump() de DbgHelp pour écrire un minidump dans le cas d'un plantage de processus. Je sais que ce n'est pas la meilleure façon de le faire, cependant, pour l'instant, nous n'avons pas d'autre option.Minidump crée un fichier de vidage vide

Le problème est le suivant: un certain exécutable crée toujours des vidages de 0 octet. Mais cela fonctionne bien pour d'autres processus. Quelle pourrait être la raison possible derrière ce comportement?

Répondre

6

Nous avons eu ce problème de temps en temps avec notre code minidumping. À la fin, nous l'avons modifié pour générer un processus secondaire léger au démarrage et utilisé un MMF simple pour communiquer avec le processus de vidage lorsque nous avions besoin d'un minidump généré.

Nous avons rencontré toutes sortes de problèmes lors de l'utilisation de MiniDumpWriteDump dans le processus en cours de vidage. Depuis le passage à un processus de dumping dédié, c'est très fiable.

Si possible, je vous suggère de considérer la même chose. Il a fini par ne pas être beaucoup de travail.

+0

+1 Nous avons fini par faire cela aussi. –

+0

@anelson, Comment obtenez-vous l'information d'exception (je veux dire le 'PEXCEPTION_POINTERS') d'un processus à l'autre? Juste simplement passer les pointeurs à MMF ne fonctionnerait pas, n'est-ce pas? –

+0

@ TamásSzelei vous ne transmettez pas les informations d'exception au processus de vidage, vous déclenchez le processus de vidage depuis le gestionnaire d'exceptions. La sauvegarde inclura le cadre de la pile, y compris les informations d'exception. – anelson

Questions connexes