Question

J'ai une application Formulaires Windows (.NET 4) qui fonctionne bien sur ma machine de développement mais se bloque sur deux autres machines de test.Je peux charger le minidup que cela crée dans VS2010.

Choisir de "déboguer avec des mixtes" conduits apparemment sans fin (j'ai tué devenv après environ 20 minutes) Abus de la CPU par Visual Studio.

Quand je "déboguer avec natif seulement", il ne peut pas trouver la source (même si j'ai reflété la source dans le même dossier que sur la machine à tester).Dit simplement:

Exception non gérée à 0x793F5B8C dans YourwinApp .exe.hdmp: 0xc0000409: 0xc0000409.

puis me montre

Emplacement de la pile d'appels: clr.dll! 793F5B8C ()

Comment puis-je découvrir ce qui causera l'application de l'application?Puis-je prendre un blocage complet complet tandis que la boîte de dialogue "Notifier Microsoft" est affichée et cela aiderait-t-il?

Était-ce utile?

La solution

Le débogage de MiniDump était supposé être considéréement amélioré dans VS2010. Je n'ai pas encore vu beaucoup de preuves pour cela, le débogage en mode mixte semble aussi gênant que c'était avant que j'ai fait des tests rapides. Ne prenez pas ma parole pour ça. Native-Seul n'est cependant jamais de vous montrer une pile d'appel gérée.

Attaquez ceci à la source. Écrivez un gestionnaire d'événements pour AppDomain.CurrentDomaine.unhandledException et enregistrez-le dans votre méthode principale (). Laissez-le afficher la valeur de E.ExceptionObject.Tostring () dans, dites, une boîte de message. Qui vous obtient la trace de pile gérée de l'exception. Tandis que cette boîte de message est affichée, vous pouvez également claquer le minidup, vous devez vous rapprocher de l'emplacement du crash.

L'exception particulière que vous obtenez est cependant définitivement pointant vers le code Native C / C ++. Un débordement tampon qui corrompre la pile. Assurez-vous de disposer des fichiers .PDB pour tout code natif de votre application utilisée. Et configurez le serveur de symboles Microsoft afin que vous obteniez une bonne trace de pile natale à partir du minidup.

EDIT: le fait que vous ne recevez pas le non-goodledexception soulevé définitivement des points de pile de la vérification de l'intégrité dans le CRT. Il a été conçu pour pas soulever une exception mais résilier immédiatement le programme. Comportement nécessaire car la pile est compromise, le code ne peut pas supposer qu'il peut être déroulé en toute sécurité. Compte tenu de l'emplacement du crash, il est probable que cette vérification soit réellement effectuée dans le code CLR. Je sais que cela n'a pas été fait dans les versions CLR précédentes, mais cela pourrait être différent dans la version CLR incluse avec .NET 4.0

Cela va faire assez difficile d'obtenir une trace de pile gérée. Il y a beaucoup de choses que vous pouvez inverser ingénieur à partir de la trace de pile non géré, tant que vous configurez le serveur de symboles afin d'obtenir des noms d'identifiant à partir des cadres de pile CLR. Publiez cette trace de pile dans votre question si vous voulez aider à l'interpréter. Un bogue dans le code CLR n'est pas improbable BTW, vous pouvez envisager d'appeler le support Microsoft. Ils auront toutefois besoin d'une reproduction cohérente. Ils peuvent faire avec cette trace de pile importante si la reproduction est difficile à venir. Configurez le serveur de symboles pour obtenir une bonne trace de pile non gérée. Facile dans VS2010: Outils + options, débogage, symboles, cochez "Serveurs de symboles Microsoft".

Autres conseils

vous configurez ProcDump pour obtenir une mémoire de mémoire complète si l'applicationa une exception non gérée, que vous pouvez déboguer dans vs ou windbg

Et le minidup a des informations sur la pile d'appels comme des godets Watson, voici un de CLR équipe et j'ai écrit sur le Identique

Une brève explication sur les informations sur le godet Watson que vous voyez dans la visionneuse d'événements pour une exception non gérée

  1. EXFILENAME
  2. Version d'assemblage EXE
  3. EXE Assembly Timeestamp
  4. Nom complet
  5. Version de montage défectueuse
  6. Hyestamp d'assemblage défectueux
  7. Méthode d'assemblage défectueux def
  8. Méthode de défaut IL Instruction qui a provoqué l'exception
  9. Type d'exception
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top