web-dev-qa-db-fra.com

Comment utiliser les fichiers PDB

J'ai entendu dire que l'utilisation des fichiers PDB peut aider à diagnostiquer où un crash s'est produit.
Ma de base compréhension est que vous donnez à Visual studio le fichier source, le fichier pdb et les informations de plantage (du Dr Watson?)
Quelqu'un peut-il expliquer comment tout cela fonctionne/qu'est-ce que cela implique? (Je vous remercie!)

45
hamishmcn

Les fichiers PDB sont générés lorsque vous générez votre projet. Ils contiennent des informations relatives aux binaires créés que Visual Studio peut interpréter.

Lorsqu'un programme se bloque et qu'il génère un rapport de plantage, Visual Studio est capable de prendre ce rapport et de le lier au code source via le fichier PDB de l'application. Les fichiers PDB doivent être construits à partir du même binaire qui a généré le rapport de plantage!

Nous avons rencontré certains problèmes au fil du temps.

  • La machine qui débogue le rapport de plantage doit avoir la source sur le même chemin que la machine qui a construit le binaire.
  • Les versions de version sont souvent optimisées dans la mesure où vous ne pouvez pas afficher l'état des variables de membre d'objet

Si quelqu'un sait comment vaincre le premier, je vous serais reconnaissant de votre contribution.

34
roo

Les fichiers PDB mappent le MSIL d'un assembly aux lignes source d'origine. Cela signifie que si vous placez la PDB qui a été compilée avec l'assembly dans le même répertoire que l'assembly, vos traces de pile d'exceptions auront les noms et les lignes des positions dans les fichiers source d'origine. Sans le fichier PDB, vous ne verrez que le nom de la classe et de la méthode pour chaque niveau de la trace de pile.

38
Omer van Kloeten

Vous devriez envisager de configurer un serveur de symboles et d'indexer les fichiers PDB dans votre système de contrôle de code source. Récemment, j'ai suivi ce processus pour notre produit et cela fonctionne très bien. Vous n'avez pas à vous soucier de rendre les fichiers PDB disponibles avec les binaires, ni comment obtenir le code source approprié lors du débogage des fichiers de vidage.

Livre de John Robbins: http://www.Amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1222366012&sr=8-1

Regardez ici un exemple de code pour générer des mini-vidages (qui ne doivent pas être limités à l'analyse post-crash - vous pouvez les générer à tout moment dans votre code sans planter): http: //www.codeproject .com/KB/debug/postmortemdebug_standalone1.aspx

12
lesscode