Afficher le nombre de lignes dans l’assemblage de trace de stack pour .NET en mode de libération

Existe-t-il un moyen d’afficher les lignes de la trace de stack pour l’assemblage / déploiement de .NET en mode Release?

METTRE À JOUR:

Mon application est divisée en trois projets de bibliothèque de classes et un projet “site web” ASP.NET. L’erreur que j’essaie de retrouver se trouve dans l’un des trois projets de bibliothèque de classes. J’ai uniquement déployé le fichier pdb pour le projet de bibliothèque de classes qui génère l’erreur “Référence d’object non définie sur une instance d’object”.

Les numéros de ligne n’apparaissent toujours pas dans la trace de la stack. Dois-je déployer les fichiers pdb pour tous les projets pour obtenir les numéros de ligne dans la trace de la stack?

Solution de travail

Le déploiement du fichier pdb pour chaque application a corrigé le problème du numéro de ligne.

    • Accédez à la fenêtre Propriétés du projet dans lequel vous souhaitez afficher les numéros de ligne de trace de la stack.
    • Cliquez sur l’onglet Construire “onglet vertical”.
    • Sélectionnez la configuration “Release”. Vérifiez le paramètre constant DEBUG.
    • Désélectionnez le paramètre “Optimiser le code” pour éviter le problème de trace occasionnel avec le code inséré (cette étape n’est pas essentielle).
    • Appuyez sur le bouton Avancé … et choisissez Sortie -> Informations de débogage -> pdb uniquement.
    • Déployez le fichier .pdb généré avec l’assembly.

    Mis en œuvre avec le commentaire ci-dessous:

    • Une autre chose à vérifier est dans la section “Package / Publish Web” que la case à cocher “Exclure les symboles de débogage générés” est également décochée.

    Dans VS2012, vous devez également désélectionner “Exclure les symboles de débogage générés” dans la section Package / Publication Web des propriétés.

    Ma solution

    Copiez le fichier pdb dans le même dossier que le fichier exécutable.

    maintenant je peux voir le numéro de ligne quand exécuter le fichier exe.

    c’est la raison

    http://msdn.microsoft.com/en-us/library/ee416588%28v=vs.85%29.aspx

    J’ai rencontré des problèmes dans le passé où je ressens le besoin de déployer des fichiers PDB avec une version validée afin de détecter une erreur. La raison en est, comme vous l’avez dit, que l’exception s’est produite dans une méthode très vaste et que je ne pouvais pas identifier avec précision où cela se passait.

    Cela pourrait être une indication que la méthode doit être restructurée en méthodes plus petites et plus granulaires. Pas une solution unique mais cette approche m’a bien servi à court terme (j’ai souvent trouvé le bogue lors du refactoring) et à long terme.

    Juste une pensée.

    Inclure des symboles de débogage avec votre package de construction / déploiement.

    Dans VS 2008 Express, je l’ai trouvé sous Propriétés du projet -> Comstackr -> Options de compilation avancées.

    Cela fonctionne à chaque fois. Vous devez juste sous-traiter le message de trace de la stack. Real Easy! En outre, dans vb.net vous devez faire le “Afficher tous les fichiers” et inclure le pdb.

    'Err is the exception passed to this function Dim lineGrab As Ssortingng = err.StackTrace.Subssortingng(err.StackTrace.Length - 5) Dim i As Integer = 0 While i < lineGrab.Length If (IsNumeric(lineGrab(i))) Then lineNo.Append(lineGrab(i)) End If i += 1 End While 'LineNo holds the number as a string 

    Version C #:

     ssortingng lineGrab = error.StackTrace.Subssortingng(error.StackTrace.Length - 5); int i = 0; int value; while (i < lineGrab.Length) { if (int.TryParse(lineGrab[i].ToString(), out value)) { strLineNo.Append(lineGrab[i]); } i++; }