J'ai une application VB.net. Actuellement, la version de l'application est produite sans fichier PDB. Cela me donne des journaux d'erreurs manquant de détails utiles tels que les numéros de ligne. Je cherche à inclure les fichiers PDB avec les versions futures, mais j'aimerais savoir quels sont les avantages et les inconvénients (performance, taille, sécurité du code)Avantages et inconvénients de l'inclusion de fichiers PDB avec votre application de publication
Répondre
Lorsque vous déployez vos symboles de débogage pour votre application, il devient très facile pour quelqu'un de venir et de rétro-ingénieur votre travail, que certaines personnes trouvent indésirable. De même, vous devez déployer plus de fichiers et votre projet déployable s'agrandit. Les fichiers PDB eux-mêmes ne ralentissent pas l'application, car l'envoi d'un PDB n'empêche pas toujours les optimisations précédentes (il faut juste faire attention - les paramètres du projet "Debug" par défaut ont tendance à ne pas optimiser vos sorties générer des PDB).
Je sais que je vais me battre pour cela, mais ...
Je suis d'accord avec Dave Markle, mais je voudrais ajouter qu'un avantage de la publication des fichiers PDB est, comme vous le dites , Très bien pour le débogage. Cela dit, je ne vends pas de logiciel, et le code que j'écris est destiné à un usage interne dans notre entreprise. Dans ce contexte, je ne vois pas de problème avec la mise en production du code de débogage, avec les fichiers PDB. Je n'ai jamais vu un coup de performance, et en toute honnêteté, nos utilisateurs nous donnent rarement les bonnes informations s'ils rencontrent des exceptions non gérées. Bien sûr, nous essayons de gérer les exceptions correctement, mais comme vous le savez, des erreurs vont se produire. Notre stratégie consiste à ajouter un gestionnaire d'exception global à TOUS les projets et à consigner ces événements dans la base de données. Ces erreurs contiennent les numéros de ligne car nous incluons les fichiers de débogage, ce qui nous permet d'identifier et de réagir rapidement aux codes incorrects, de les corriger et d'obtenir plus d'applications sans bogues. Pour moi (et pour nos utilisateurs) c'est un énorme avantage dont je ne voudrais pas me passer. Donc, si vous êtes dans une situation similaire, je dis oublier la position officielle (dans ce cas) et aller de l'avant et de publier les fichiers pdb avec une mise en garde importante. Assurez-vous que toutes les applications Web que vous déployez avec les fichiers PDB, assurez-vous que toutes les exceptions sont gérées correctement et que vous n'exposez pas par inadvertance des lignes de code dans une page d'erreur Asp.NET standard.
Je trouve utile d'avoir aussi des informations de débogage construites pour la version Release - cela aide à attraper les bogues. Cela ne ralentit pas le programme. Mais vous ne devriez pas expédier le fichier PDB avec votre application, si vous ne voulez pas que les autres puissent le désosser plus facilement. Seulement le donner aux testeurs.
L'application est une application interne. Ça va seulement être utilisé dans notre entreprise.Les restrictions utilisateur empêchent les utilisateurs d'être en mesure de désosser notre code – zeocrash
Créez des pdbs pour votre version, mais ne les exportez pas. Gardez les pdbs dans un endroit sûr avec la construction correspondante et le code source. Si vous obtenez un crash en direct, ou similaire, vous pouvez utiliser le pdbs pour faire du débogage post-mortem en utilisant le Debugging Tools for Windows, ou Visual Studio.
Nous essayons de garder toutes les exceptions gérées. Nous ne faisons donc pas de débogage post mortem. Sur les exceptions gérées, nous enregistrons la trace de la pile dans la base de données. – zeocrash
Le débogage post mortem est également utile lorsque vous ne recevez aucune exception, par exemple si votre application se bloque. Vous pouvez capturer un mini-vidage du processus bloqué, puis le déboguer à distance en utilisant les pdbs et le code source. – Polyfun
Qu'essayez-vous exactement d'accomplir avec les fichiers PDB? A moins d'obscurcir le code, vous avez déjà de belles traces de pile avec du code managé (et je suppose que PDB rend l'obfuscation inutile de toute façon ...). Le seul avantage que vous obtenez sont les symboles "cachés" tels que les locaux et les noms de paramètres. – Krumelur
Drats. J'aime cette question, mais elle a déjà été posée ici: http://stackoverflow.com/questions/1307482/whats-the-risk-of-deploying-debug-symbols-pdb-file-in-a-production-environment – David
Les noms de paramètres et les numéros de ligne sont très utiles. Notre application, est très grande construite par plusieurs développeurs différents sur plusieurs versions différentes de VB. Actuellement, nous avons le nom des procédures dans la pile, mais ce serait bien d'avoir un peu plus de données. – zeocrash