Quel fichier est pdb ?
pdb fait référence au fichier "base de données du programme", qui est un fichier généré lorsque VS est compilé et lié. Le fichier DPB stocke principalement les informations de base requises par VS lors du débogage du programme, notamment le nom du fichier source, le nom de la variable, le nom de la fonction, le FPO, le numéro de ligne correspondant, etc. Le fichier PDB est généré lors de la compilation du projet, et il est généré avec le module correspondant.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
PDB (Program DataBase), le nom complet est le fichier "Program Database", qui est un fichier généré lorsque VS est compilé et lié. Le fichier DPB stocke principalement les informations de base requises par VS lors du débogage du programme, notamment le nom du fichier source, le nom de la variable, le nom de la fonction, le FPO (pointeur de trame), le numéro de ligne correspondant, etc. Les informations de débogage étant stockées, les fichiers PDB sont généralement générés en mode débogage.
Les informations pertinentes sur le chemin du fichier source sont enregistrées dans le fichier PDB, donc lors du chargement du fichier PDB, les informations de débogage pertinentes peuvent être mises en correspondance avec le code source. Cela vous permet de visualiser visuellement les appels de fonction, les valeurs des variables et d'autres informations associées pendant le débogage en temps réel. Le fichier PDB enregistré dans le module est un chemin absolu. Ainsi, tant que le module est chargé sur l'ordinateur actuel, le débogueur trouvera naturellement le fichier PDB correspondant en fonction des informations de chemin dans le module et le chargera. De même, le chemin du fichier source enregistré dans le fichier PDB est également un chemin absolu, donc tant que le fichier PDB est chargé sur l'ordinateur actuel et débogué dans le module correspondant, il peut correspondre au fichier source enregistré, puis afficher visuellement le informations correspondantes.
Quand le fichier PDB sera-t-il généré ?
Le fichier PDB est généré lorsque nous compilons le projet. Il est généré avec le module correspondant (exe ou dll). Nous ne réalisons généralement pas l’importance des fichiers PDB, car si nous développons uniquement localement, nous pouvons toujours procéder à des ajustements. Ici, je souhaite introduire deux concepts : Private Build et Public Build1. Private Build fait référence à la compilation sur la machine de développement et Public Build fait référence à la compilation sur la machine responsable de la compilation.
Comme je l'ai dit plus haut, il n'y a généralement aucun problème avec Private Build, car tous les fichiers nécessaires au débogage sur la machine compilée sont là où ils devraient être. La plupart des problèmes qui ne peuvent pas être débogués se produisent dans le cas de Public Build.
Si votre application doit être publiée ou vendue en tant que produit, vous devez accorder une attention particulière à la sauvegarde du fichier PDB et du fichier source de la version que vous publiez. Remarque : Vous n'avez qu'une seule chance de sauvegarder le fichier PDB publié. Si vous le perdez, vous ne pourrez pas le récupérer. 2 (La raison est expliquée ci-dessous)
Pourquoi PDB est-il si important ?
Peut-être que vous pensera que si vous prenez, recompilez simplement un fichier PDB avec exactement le même code source, puis utilisez-le pour le débogage. Je le pensais, jusqu'au jour...
La raison directe est que la partie en-tête du fichier binaire généré par VS contient le GUID de son PDB correspondant, et le PDB contient également un GUIID. deux GUID sont ajoutés lors de la compilation. Le débogueur VS comparera les deux GUID lors du chargement du PDB. S'ils sont incohérents, ils ne pourront pas être utilisés.
Bien sûr, la raison ci-dessus n'est qu'un phénomène superficiel. La raison fondamentale est que les fichiers compilés par le compilateur peuvent être différents de deux codes identiques. Étant donné que le compilateur optimisera le code lors de la compilation et que le même code peut avoir de nombreuses méthodes d'optimisation, il choisira la méthode de génération la plus rapide en fonction de l'environnement machine spécifique du moment. Les fichiers qu'il génère peuvent donc être différents ! Ainsi, si même les fichiers générés sont différents, alors les adresses correspondant aux symboles dans le PDB d'origine n'auront aucun sens.
Comment afficher le GUID des fichiers binaires et des PDB ?
Utilisez l'outil DUMPBIN fourni avec VS pour afficher le GUID du PDB attendu par le fichier binaire. L'utilisation de base est le fichier DUMPBIN /HEADER. Pour une utilisation spécifique, veuillez vous référer à MSDN (http://msdn.microsoft.com/zh-cn/library/c1h23y6c(v=vs.80).aspx).
Pour afficher le GUID du PDB, vous pouvez utiliser l'outil suivant et extraire directement le PDB.
http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P
Stratégie de recherche pour les fichiers PDB
Les résultats des tests sont affichés en premier, puis vous pouvez trouver la stratégie de recherche du symbole d'un module à partir du port série du module de Visual Studio pendant le débogage. À partir de la capture d'écran, nous pouvons voir les résultats comme suit :
1. L'adresse où le fichier est exécuté ou chargé
2. codé dans le fichier PE l'adresse dans l'en-tête. Vous pouvez voir que obj
2.5 Si un serveur de symboles est configuré, après la deuxième étape, vous devez d'abord rechercher dans le répertoire cache du serveur de symboles. Si vous ne le trouvez pas, accédez au serveur de symboles pour le trouver. S'il est trouvé, il sera téléchargé dans le répertoire cache.
3. La troisième partie concerne les répertoires de certaines requêtes de symboles définies dans mon VS. Parce que j'ai installé Reflector, ces répertoires sont ajoutés à mes paramètres par défaut.
4. Dossier Windows.
Un phénomène intéressant ici est que la stratégie de recherche de VS trouvera d'abord symbolexeproject.pdb dans un répertoire, puis exeproject.pdb et enfin project.pdb. Cet ordre est quelque peu surprenant.
Les fichiers PDB affecteront-ils les performances ?
Certaines personnes peuvent penser que la génération de fichiers PDB aura un certain impact sur les performances de l'application finale, elles estiment donc que les fichiers PDB ne devraient pas être générés dans la version finale.
Faux ! Pour les applications .NET, la génération de fichiers PDB n'affectera pas l'optimisation du compilateur et n'affectera donc pas du tout les performances de l'application. Cela n'affectera qu'un seul attribut DebuggableAttribute dans l'assembly généré. Ceux qui sont intéressés peuvent lire Les fichiers PDB affectent-ils les performances ?
Recommandations de didacticiels vidéo connexes : "Tutoriel ASP.NET"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article explore les défis des déréférences du pointeur nul dans C. Il soutient que le problème n'est pas nul lui-même, mais son utilisation abusive. L'article détaille les meilleures pratiques pour prévenir les déréférences, y compris les contrôles de pré-déréférence, le pointeur initiali

Cet article explique comment créer de nouvelles caractères en C en C en utilisant la séquence \ n Escape dans printf et met des fonctions. Il détaille les fonctionnalités et fournit des exemples de code démontrant son utilisation pour les ruptures de ligne en sortie.

Cet article guide les débutants sur le choix d'un compilateur C. Il fait valoir que le CCG, en raison de sa facilité d'utilisation, de sa large disponibilité et de ses vastes ressources, est la meilleure pour les débutants. Cependant, il compare également GCC, Clang, MSVC et TCC, mettant en évidence leur différenciation

Cet article met l'accent sur l'importance continue de Null dans la programmation C moderne. Malgré les progrès, NULL reste crucial pour la gestion explicite du pointeur, empêchant les défauts de segmentation en marquant l'absence d'une adresse mémoire valide. Meilleur prac

Cet article passe en revue les compilateurs C en ligne pour les débutants, en se concentrant sur la facilité d'utilisation et les capacités de débogage. Onlinegdb et Rep.Il sont mis en évidence pour leurs interfaces conviviales et leurs outils de débogage utiles. Autres options comme Programiz et Compil

Cet article traite de la copie de code efficace dans les Cides. Il souligne que la copie est une fonction IDE, pas une fonctionnalité de compilateur, et détaille des stratégies pour une efficacité améliorée, y compris l'utilisation d'outils de sélection IDE, le pliage de code, la recherche / remplacer, Templa

Cet article compare les plateformes de programmation C en ligne, mettant en évidence les différences de fonctionnalités telles que les outils de débogage, les fonctionnalités IDE, la conformité standard et les limites de mémoire / d'exécution. Il soutient que la "meilleure" plate-forme dépend des besoins des utilisateurs,

Cet article dépanne les fenêtres de sortie manquantes dans la compilation du programme C. Il examine des causes telles que le non-exécution de l'exécutable, des erreurs de programme, des paramètres de compilateur incorrects, des processus de fond et une terminaison rapide du programme. Les solutions impliquent ch
