Récemment, un projet a été déployé en environnement de production et il a été découvert que certaines méthodes diffusaient des messages anormaux
Cependant, seules des informations d’erreur anormales sont données, et il n’y a pas de numéro de ligne anormal, seulement qu’il y a un problème avec la conversion du modèle dans une certaine méthode
Mais laissez-moi les comparer un par un, c’est trop agaçant, pourquoi ne pas enregistrer le mauvais numéro de ligne ?
La configuration log4net est la suivante :
J’ai délibérément écrit un message d’exception dans la méthode Home/Index sur mon ordinateur local pour voir si le numéro de ligne serait enregistré :
J’ai constaté que le fichier journal d’erreur enregistre le numéro de ligne, ce qui n’est clairement pas un problème avec la configuration log4net, car la configuration des deux côtés est la même
Cela pourrait-il venir d’un problème avec le mode compilation ???
Mon ordinateur local est en mode débogage, et la DLL compilée par le serveur officiel est en mode release
Ensuite, j’ai mis le projet local en mode release, et j’ai constaté que c’était toujours un numéro de ligne de record.
Puis, Baidu, la première phrase :Vous devez copier le fichier .pdb correspondant à la dll”
Eh bien, est-ce un problème ? Ensuite, je suis allé directement dans le répertoire bin, supprimé le fichier .pdb correspondant à la DLL, puis j’ai rafraîchi le site web, et j’ai trouvé le journal des exceptions comme suit :
Effectivement, le numéro de ligne anormal n’est pas enregistré !!!!
Est-ce vraiment un problème .pdb !! Vous devez conserver le fichier .pdb afin que le numéro de ligne soit enregistré s’il est anormal !!
À quoi sert un fichier PDB ?
Fichiers PDB : Ce que tout développeur doit savoir
Qu’est-ce qu’un fichier PDB ?
La plupart des développeurs doivent savoir que les fichiers PDB sont utilisés pour aider au débogage logiciel. Mais comment il fonctionne exactement, nous ne le savons peut-être pas bien. Cet article décrit le stockage et le contenu des fichiers PDB. Il décrit également comment le débogueur trouve le fichier PDB correspondant à binay et comment il trouve le code source correspondant à binay. Cet article s’adresse à tous les développeurs natifs et managés.
Avant de commencer, définissons deux termes : build privé, qui désigne une build générée sur la propre machine du développeur ; Build public, ce qui signifie une build générée sur une machine de build publique. la construction privée est relativement simple, car PDB et binay sont au même endroit, et généralement les problèmes que nous avons concernent la construction publique.
La chose la plus importante que tous les développeurs doivent savoir, c’est que « les fichiers PDB sont tout aussi importants que le code source », sans lequel on ne peut même pas déboguer. Pour la compilation publique, le serveur de symboles doit stocker tous les PDB, puis lorsque l’utilisateur signale une erreur, le débogueur peut automatiquement trouver le fichier PDB correspondant dans binay, et Visual Studio et Windbg savent comment accéder au serveur de symboles. Avant de stocker PDB et binay sur le serveur de symboles, vous devez également indexer la source de la course PDB, qui consiste à associer PDB et source.
La partie suivante suppose que le serveur de symboles et l’indexation du serveur source sont déjà configurés. TFS2010 peut être fait aussi simplement que l’indexation de source et la copie du serveur de symboles pour une nouvelle version.
2. Le contenu du fichier PDB
Officiellement au début du contenu de PDB, PDB n’est pas un format de fichier public, mais Microsoft fournit une API pour aider à obtenir des données de PDB.
Le PDB Natif C++ contient les informations suivantes : * adresses de fonctions publiques, privées et statiques ; * Le nom et l’adresse de la variable globale ; * Noms et décalages des paramètres et variables locales sur la pile ; * définitions de type de classe, structure et données ; * Données d’omission de pointeur de trame pour parcourir la pile native sur x86 ; * Le nom et le nombre de lignes dans le fichier source ;
Le .NET PDB ne contient que 2 parties d’information : * Code source nom du fichier et nombre de lignes ; * et le nom de la variable locale ; * Toutes les autres données sont déjà incluses dans le fichier . NET Metadata ;
|