Comment puis-je obtenir un vidage sur incident
J'ai besoin d'obtenir un vidage sur incident à partir d'un programme. Comment puis-je l'obtenir?
Le Programme est écrit en C#. Quel est exactement un crash dump? Quand est-il créé? Où est-il enregistré?
Comment dois-je le lire?
OS? Plate-forme? De la langue?
Voulez-vous dire vous avez besoin de créer un dump lorsque l'application se bloque, ou avez-vous juste besoin de prendre un vidage de la mémoire d'une application en cours d'exécution? Parce que les deux sont tout à fait différemment atteints.
blogs.msdn.com/b/debugger/archive/2009/12/30/... - Bien expliqué!
Double Possible de Comment dois-je prendre un bon vidage sur incident .NET?
Voulez-vous dire vous avez besoin de créer un dump lorsque l'application se bloque, ou avez-vous juste besoin de prendre un vidage de la mémoire d'une application en cours d'exécution? Parce que les deux sont tout à fait différemment atteints.
blogs.msdn.com/b/debugger/archive/2009/12/30/... - Bien expliqué!
Double Possible de Comment dois-je prendre un bon vidage sur incident .NET?
OriginalL'auteur Luke | 2011-02-14
Vous devez vous connecter pour publier un commentaire.
Depuis que vous dites C# je suppose que vous êtes à l'aide de la plate-forme Windows.
Un crashdump, ou tout simplement de vidage, est l'instantané de la mémoire et d'autres informations système d'un processus à un moment donné dans le temps. Décharges peut être utilisé pour déboguer le programme se bloque, se bloque, la mémoire et les ressources des fuites et probablement plus de problèmes, je n'ai pas répertoriés ici.
Dans le cas d'incidents et de pannes le premier morceau de données que vous souhaitez obtenir à partir d'un vidage sur incident sera la pile des appels. Cela indique le point d'accident ou de, le point sur lequel l'opération est bloquée et ne revint jamais en sorte que le programme se trouve et ne fait rien.
Pour les ressources des fuites multiples vidages de mémoire d'un processus peuvent être collectées sur une période de temps et examiné afin de voir quels sont les objets dans la mémoire croissent le plus. Cela peut aider à réduire les parties du code sont à l'origine de la fuite. Pour en savoir plus sur le débogage des questions précises je vous recommande vivement ce blog.
Il ya quelques façons de capturer un fichier de vidage.
Avec procdump vous pouvez tout simplement faire:
Le résultat de cette commande sera instantané de la mémoire de YourProcessName.dmp écrit à c:\ . La -ma commutateur spécifie le vidage de la mémoire complète de l'image. Si vous êtes le débogage d'un crash ou d'accrocher vous pouvez vous en sortir sans la ma de l'interrupteur. Gardez à l'esprit sans le vidage de la mémoire lorsque vous allez à examiner les structures de données, vous n'aurez probablement pas de données valides. Sans l'image mémoire complète, vous aurez toujours la pile des appels de données qui est souvent assez bon pour les blocages. J'ai généralement d'une erreur sur le côté de l'espace disque dur est pas cher, donc de recueillir le vidage complet.
Procdump automatiquement prendre des décharges à des intervalles de temps ou lorsqu'une condition particulière est remplie. Lisez la documentation sur le lien ci-dessus pour plus d'info. Un interrupteur je recommande est
-e
.Au lieu d'écrire le dump immédiatement, il ne pourra le faire que si votre programme se bloque.
Avec Visual Studio 2010, vous pouvez l'attacher au processus avec le débogueur et enregistrer un fichier de vidage. (Gardez à l'esprit lorsque vous F5 de déboguer votre programme Visual Studio connecte automatiquement). Lorsque votre programme est dans un "état d'épuisement" (point d'arrêt, exception non gérée, crash) le
Debug
menu, vous avez la possibilité deSave Dump As...
. Ensuite, vous pouvez enregistrer que le dump n'importe où vous le souhaitez.Puisque vous avez mentionné en C# vous êtes très susceptibles de collecte gérés les fichiers de vidage. Le plus simple est d'utiliser Visual Studio 2010. Simplement, ouvrir le fichier de sauvegarde que vous avez créé, comme vous le feriez pour tout autre fichier et de commencer le débogage.
Toutefois, si ce n'est pas une option, vous pouvez toujours utiliser VS2008 ou WinDbg avec le SOS des extensions. Je ne conseille vivement de Visual Studio 2010 même si, comme SOS extensions et WinDbg en général, ont une jolie courbe d'apprentissage abrupte. Pour en savoir plus sur SOS découvrez ces articles MSDN ici et ici.
Une autre raison, je recommande l'utilisation de Visual Studio ou procdump, c'est qu'ils vont recueillir le fichier d'image que vous attendez. Je vous recommande de direction claire de la Tâche du Gestionnaire de "Créer un Fichier de Vidage de l'Outil". La raison d'être, il permettra de recueillir 64bit décharges de 32 bits processus qui sont trop difficiles à déboguer.
OriginalL'auteur Evan
Sur Windows XP, vous pouvez créer un fichier de vidage avec cet utilitaire:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e089ca41-6a87-40c8-bf69-28ac08570b7e&displaylang=en
Une fois installé, accédez au répertoire d'installation et exécutez
à partir de la ligne de commande où PID est le PID du processus que vous souhaitez pour obtenir un fichier de vidage sur incident (vous pouvez en trouver dans le gestionnaire des tâches, mais vous pourriez avoir besoin d'ajouter la colonne à l'affichage standard).
Ce fichier peut ensuite être ouvert dans Visual Studio, il vous suffit de vous assurer que vous avez les symboles construit.
Dans Windows 7 clic droit sur le processus dans le Gestionnaire des Tâches et sélectionnez "Créer un Fichier de Vidage"
OriginalL'auteur briantyler
Utiliser ADPlus. Il est livré avec les Outils de Débogage pour Windows.
Il va créer des dossiers de crash dumps en dessous du répertoire de base. Vous pouvez les analyser à l'aide de WinDbg par la suite.
OriginalL'auteur Dennis
Luc, un crash dump est un sac entier de données relatives à l'état de votre demande au moment de la collision qui s'est passé, pour le dump des moyens pour enregistrer toutes ces informations quelque part, en général dans un fichier texte.
une approche de base consiste à connecter l'ensemble de la stacktrace lorsqu'une exception se produit de sorte que vous pourrait étudier plus tard et de voir quelle méthode a échoué et jeté les exceptions qui, à ce que les valeurs des paramètres ont été et ainsi de suite. Ce n'est pas vraiment un coup de coeur dump mais aide beaucoup dans de nombreux cas.
Il y avait quelque chose de développé récemment par MS sur les vidages sur incident et l'application se bloque, je pense que c'est lié à Windows 7 en fait...
voir ici: Récupération de l'Application et Redémarrez
http://msdn.microsoft.com/en-us/library/cc948909(v=vs. 85).aspx
OriginalL'auteur Davide Piras
Vous pouvez également essayer d'utiliser WinDbg
http://www.windbg.org/
Un crash dump, c'est quand le contenu de la mémoire RAM et certaines parties du processeur sont copiées dans un fichier. Ce fichier est créé au point critique d'une erreur et peut être utilisé pour déboguer le problème.
Ce qui a fonctionné pour moi dans le passé. C'est un raccourci clavier pour le vidage sur incident dans windows.
http://vinaytechs.blogspot.com/2010/01/how-to-get-crash-or-hang-dump.html
Mieux plus de pas assez.
Alors que de déterminer quel mode utilisateur était en train de faire à partir d'un noyau en mode dump est possible; c'est beaucoup plus de travail que je voudrais faire, si je pouvais l'éviter.
Ne faites pas attention à moi. Je suis un grand fan de raccourcis.
OriginalL'auteur sleath