WinDbg montrant différentes piles d'appels lorsqu'ils sont attachés à une procédure par rapport à vidage mémoire

StackOverflow https://stackoverflow.com/questions/1666137

Question

Je l'analyse d'une impasse qui est se produit lorsque vous utilisez une bibliothèque native à côté du code managé. J'utilise WinDbg pour déboguer le problème avec l'intention de sauver une décharge telle que le vendeur peut observer la question dans leurs locaux.

Lors de la fixation au processus problématique que je vois le message suivant avant que les piles d'appel:

  

AVERTISSEMENT: Stack informations non disponibles se détendre. À la suite de cadres peut être erroné.

Les images semblent réellement correct lorsqu'il est attaché directement au processus. Cependant, quand je prends une décharge de ce fichier puis ouvrez la décharge dans WinDbg sur une autre machine, un des cadres de la pile est différente (l'erreur ci-dessus est affiché aussi.) Cela avait à l'origine du vendeur déconcerté, comme le chemin de code semblait impossible .

Je pris la décharge à l'aide:

.dump /ma filename.dmp

Quelle serait la cause de cette différence, et est-ce que je peux faire pour analyser de manière fiable les piles d'appels d'un fichier de vidage? Y aurait-il d'autres données Misrepresented je devrais être au courant?

Était-ce utile?

La solution

Cela semble que vous pourriez avoir PDB dépareillées. Avez-vous essayé les commandes de !chksym et !itoldyouso? par exemple, voir Blog MSDN

Autres conseils

L'avertissement vous indique que le débogueur ne peut pas associer une ou plusieurs adresses sur la pile avec des informations de module existant. Comme le code managé est compilé à la volée par le CLR, il n'y a pas de modules correspondants pour le code et donc l'avertissement.

La commande SOS! Clrstack possède les informations nécessaires à partir du CLR pour afficher une pile significative (ou tout au moins sans l'avertissement). Si vous utilisez un de la commande de vidage de pile natif, vous verrez cet avertissement pour le code managé.

Le prochain livre avancée Debugging .NET contient des détails supplémentaires. Voir http://advanceddotnetdebugging.com/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top