2011-08-31 3 views
4

Je travaille sur une application en mode mixte (C++/CLI, C++, certains C#) et quand elle se bloque sur le terrain, une image mémoire est créée. Je reçois habituellement ces décharges du client et essaye de comprendre ce qui s'est mal passé.Débogage post-mortem .NET avec SOS.dll

La question est - comment gérer le débogage post-mortem du code managé? J'utilise habituellement WinDbg avec le SOS.dll, mais il semble que SOS ne soit pas rétrocompatible! J'ai récemment exécuté Windows Update et maintenant je ne peux plus charger de minidumps à partir du site client. Il se plaint de la mauvaise version de SOS.

Comment puis-je obtenir et charger la ou les version (s) précédente (s)? Je fais quelque chose de mal?

+0

Il n'y a pas eu de mise à jour récente de sos.dll afaik. Vous devez généralement vous inquiéter de la modification de la configuration de votre * client *. Documentez mieux votre question avec les messages d'erreur * exact * et les versions et les dates sur votre fichier sos.dll et le mscorlib.dll dans le minidump. –

+0

Pourriez-vous lister l'erreur que vous obtenez s'il vous plaît. –

Répondre

1

C'est probablement un problème x86/64. Comment chargez-vous sos?

Vous pouvez essayer sos chargement en utilisant:

.loadby sos mscorwks 

Ou, à défaut, essayez de charger les 64 bits sos explicitement:

.load c:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll 
+0

Note: Ces exemples sont un peu bizarres. La première tente de charger 'sos' depuis l'emplacement de' mscorwks', c'est-à-dire l'exécution 2.0. Le second exemple tente de charger 'sos' directement à partir de l'exécution 4.0. –