web-dev-qa-db-fra.com

Comment créer MiniDump pour mon processus lorsqu'il se bloque?

Je ne suis pas capable de créer MiniDump forme mon processus en modifiant le réglage du système. Donc, ma question est:

  • Le système créera-t-il un miniCRUM pour un processus utilisateur lorsqu'il se bloque

    Si oui, quel paramètre dois-je configurer?

  • Ou est-ce que je dois créer des miniduques par programme.

  • Dans quelle mesure les minidumps sont-ils efficaces tout en enquêtant sur un crash?

J'utilise Windows XP, C++, VC6

31
Satbir

Vous devez créer de manière programmable un minidup (à une exception près, voir le lien suivant). CodeProject a une belle article sur MiniRumps . Fondamentalement, vous voulez utiliser dbghelp.dll Et utilisez la fonction MiniDumpWriteDump() (voir MSDN sur MiniDumpwridressump ).

L'efficacité de ces décharges dépend beaucoup de l'application. Parfois, pour des fichiers binaires optimisés, ils sont pratiquement inutiles. De plus, sans expérience, les bogues de corruption de tas/empilement vous égareront.

Cependant, si l'optimiseur n'était pas trop difficile sur vous, il existe une grande classe d'erreurs où les vidages font aident, à savoir tous les bugs où ayant un La pile-trace + les valeurs des variables utilisées localement sont utiles, c'est-à-dire de nombreuses choses d'appel de la fonction virtuelle pur-virtuel (c.-à-d. Un mauvais ordre de destruction), des violations d'accès (vérification des chèques NULL à accès ou manquantes), etc.

BTW, si votre stratégie de maintenance le permet d'en quelque sorte, portez votre application de VC6 à quelque chose d'acceptable, comme VC8 ou 9. Vous vous ferez une grande faveur.

28
gimpf

Merci à tout de visualiser et de répondre spécial grâce à GIMPF, j'ai chooglé sur Internet et MSDN.

J'ai trouvé un excellent article sur déboginfo.com Cela vaut la peine de lire:

MiniCumps efficaces

15
Satbir

Nous utilisons Google Breakpad dans Firefox, bien que cela nécessite au moins Visual C++ 2003. La bonne prestation latérale est qu'elle prend également en charge OS X et Linux.

4
Ted Mielczarek

J'ai fini par utiliser Crashrpt sur Windows (m'avésible de déplacer l'intégralité de la base de code et de la trappe de Mingw vers le compilateur Native Microsoft C/C++) et Google-Breakpad sur Linux.

2
Tosha

Si vous avez quelques dollars à réserve AQTRACE peut valoir le détour. Cela présente de nombreux avantages de l'accident survenant à l'intérieur du débogueur, tout en fonctionnant sur une machine utilisateur à distance.

1
SmacL