2010-12-03 4 views
0

Je voudrais effectuer un vidage sur incident d'un processus .Net en cours d'exécution, qui n'a pas réellement planté, pour le débogage ultérieur. Comment puis-je faire ceci?Comment capturer un processus .Net en cours sur le disque?

C'est une application .Net 4 fonctionnant sous Windows 2k3.

+0

Le débogage de Minidump pour une application gérée suce des rochers de la taille des rochers des Rocheuses. Tu devrais être désespéré. La connexion d'un débogueur géré est de loin supérieure. Mais essayez-le, google sos.dll –

Répondre

1

Mise à jour: À ce stade, je recommande d'utiliser procdump à la place, car il prend en charge beaucoup d'options supplémentaires pour quand capturer la sauvegarde.

Pour un vidage sur incident, votre meilleure option est probablement de Debugging Tools for Windows. Il automatise l'attachement du débogueur cdb et la création de fichier (s) de vidage lorsqu'une ou plusieurs exceptions non gérées se produisent. Vous pouvez même lui demander de créer des vidages pour toutes les exceptions de première chance, si nécessaire. La syntaxe est simple, afin de prendre une décharge de crash d'un appel de processus app.exe vous feriez quelque chose comme

adplus -crash -pn app.exe -o <output dir> 

Une fois que vous avez la décharge, vous pouvez le charger dans WinDbg, charge SOS et regarder à l'exception en utilisant les commandes !threads et !printexception.

Si vous êtes intéressé il ya quelques vidéos sur Channel 9 avec des démos de débogage. L'une des démos est une décharge d'accident.

http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-1

http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

(divulgation complète: Je suis le présentateur dans les vidéos, donc pardonnez le bouchon sans vergogne).

1

Vous pouvez utiliser windbg pour générer une image mémoire.

Voir this entrée de blog sur la façon de procéder.

0

J'ai installé des outils denbugging pour fenêtre et utiliser ADPlus avec le réglage -hang

+0

Un hang hang vous donnera un instantané immédiat du processus. Cela peut être très utile dans de nombreux cas, mais cela ne vous aidera généralement pas à résoudre un problème. Pour cela, un vidage sur incident est plus utile. –

0

Vous pouvez utiliser Process Dumper à faire pour tout processus en mode utilisateur.

Le processus en mode utilisateur dumper (userdump) décharges tout en cours d'exécution Win32 processus image de mémoire à la volée, sans y attacher un débogueur, ou mettre fin à des processus cibles.

Je pense que le débogage des dumps générés comme ceci est limité à WinDbg. Vous n'obtiendrez pas toute la facilité d'utilisation de Visual Studio. Il y a des informations here sur le débogage post-mortem des vidages des applications gérées.

Questions connexes