Comment identifiez-vous (et obtenez-vous accès à) les modules / symboles de débogage à utiliser lorsque Windows .dmp ou .minidmp est fourni

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

Question

D'une manière qui découle de la lecture d'un fichier Windows * .dmp

Après avoir reçu un fichier de vidage d'un client aléatoire, en exécutant la session de débogage pour voir l'incident, vous constatez souvent qu'il se trouve dans une bibliothèque MS ou d'une autre tierce partie. Le problème suivant est que vous ne connaissez peut-être pas suffisamment la configuration du PC pour pouvoir vous assurer que vous disposez réellement des modules.

Par exemple, je suis actuellement bloqué pour essayer de charger les symboles pour ntdll.dll (5.01.2600.5512). Dans MSVC 2005, la colonne de chemin d'accès dans la fenêtre de liste de modules indique un * avant le nom de fichier avec chemin complet et refuse de charger les symboles que j'ai téléchargés pour XP / SP1 / SP1a / SP2 / SP3.

J'ai la configuration du serveur de symboles à télécharger sur Internet et à stocker dans un cache local qui semble fonctionner correctement pour les modules que j'ai sur mon PC. Utiliser une interface graphique équivalente à la méthode

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

J'ai peut-être le mauvais symbole, mais comme les nouveaux ne se téléchargent pas, où puis-je aller? Dois-je contacter le client pour lui demander quel SP il a installé et quels autres correctifs? Dois-je installer cette machine, puis exécuter le débogueur avec le fichier dmp pour obtenir les symboles dont j'ai besoin?

Était-ce utile?

La solution

Qu'est-ce que vous utilisez pour déboguer le minidump? C'est-à-dire WinDBG ou Visual Studio? Et comment le minidump a-t-il été généré?

Le minidump devrait contenir suffisamment d’informations pour résoudre correctement les symboles de la DLL système. Utilisez-vous un téléchargement local de symboles ou http://msdl.microsoft.com/ ?

Mise à jour: vous devriez pouvoir ajouter le magasin public de symboles Microsoft aux emplacements Outils- & Options - > Débogage- > Symboles- > Fichier de symboles (.pdb), puis charger manuellement les symboles en faisant un clic droit dans le module de la fenêtre Modules et en les chargeant si cela n’est pas fait automatiquement.

Il est également possible (probable) que VS 2005 ne consulte pas _NT_SYMBOL_PATH pour résoudre les symboles minidump.

Autres conseils

Si vous utilisez WinDbg (membre de la Outils de débogage pour Windows package), il est simple de le faire extraire automatiquement les bons symboles de Microsoft. Configurez le chemin des symboles à l'aide de l'option ".symfix". (ou ".symfix +", à simplement ajouter à votre chemin de recherche de symbole existant).

Une fois que cela est fait et que le vidage sur incident est chargé dans WinDbg, tapez ".reload / f". pour que WinDbg recharge les symboles. Il utilisera les informations contenues dans le fichier de vidage lui-même pour extraire les symboles appropriés du serveur de symboles publics de Microsoft, quelles que soient les DLL que vous avez sur votre ordinateur.

Si, pour une raison quelconque, les symboles ne se chargent pas correctement après cela, entrez "! sym noisy". dans la fenêtre de commande de WinDbg et rechargez à nouveau les symboles. Lorsque WinDbg essaiera de les charger, vous verrez s'afficher toutes les erreurs rencontrées lors de son processus de recherche / chargement. Ces messages d'erreur vous aideront à mieux diagnostiquer ce qui ne va pas et à savoir pourquoi les symboles corrects ne sont pas chargés.

Ce message contient des informations qui peuvent également être utile.

Si vous saisissez " Définissez _NT_SYMBOL_PATH = srv ... " dans une invite de commande, il y a deux choses à considérer:

    La commande set de
  • cmd.exe n'ignore pas les espaces, elle définit donc une variable appelée " _NT_SYMBOL_PATH ", pas " ; _NT_SYMBOL_PATH ".
  • Vous devez démarrer le débogueur en tant qu'enfant de cette invite de commande. Toutefois, cette opération est inutile si vous utilisez le Panneau de configuration pour définir des variables d'environnement persistantes ou si vous utilisez la commande setx (sous Windows Vista ou dans l'un des kits de ressources Windows).

Si vous définissez le chemin du symbole d'une autre manière, cela ne s'applique pas.

Essayez de suivre les instructions de cet article kb et assurez-vous que le chemin d'accès aux symboles est configuré. correctement, que WinDbg y a accès et que les symboles ntdll (par exemple) sont effectivement téléchargés dans votre cache de symboles. Cet article explique également comment télécharger et vérifier manuellement les symboles de votre cache via l’outil SymChk.

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