Question

Y a-t-il un moyen d'afficher les lignes dans la trace de la pile pour l'assemblage .NET créé / déployé en mode publication?

UPDATE:

Mon application est divisée en trois projets de bibliothèque de classe et un projet ASP.NET "site Web". projet. L'erreur que j'essaie de localiser se trouve dans l'un des trois projets de bibliothèque. J'ai uniquement déployé le fichier pdb pour le projet de bibliothèque de classes qui génère la "référence d'objet non définie à une instance d'objet". erreur.

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

Solution de travail

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

Était-ce utile?

La solution

  • Accédez à la fenêtre Propriétés du projet où vous voulez voir les numéros de ligne de trace de pile.
  • Cliquez sur l'onglet "Créer un onglet vertical".
  • Sélectionnez " Libérer " configuration. Vérifiez le paramètre constant DEBUG.
  • Désélectionnez la case "Optimiser le code". paramètre permettant d'éviter le problème de trace occasionnel avec du code en ligne (cette étape n'est pas indispensable).
  • Appuyez sur le bouton Avancé ... et choisissez Sortie - > Informations de débogage - > pdb-only.
  • Déployez le fichier .pdb généré avec l'assembly.

Mis en œuvre avec le commentaire ci-dessous:

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

Autres conseils

Sous VS2012, vous devez décocher "Exclure les symboles de débogage générés". dans la section Package / Publish Web des propriétés également.

Ma solution

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

Je peux maintenant voir le numéro de la ligne lors de l'exécution du fichier exe.

c'est la raison

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

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

Cela peut indiquer que la méthode doit être refactorisée en méthodes plus petites et plus granulaires. Ce n’est 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.

Incluez les symboles de débogage dans votre package de construction / déploiement.

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

Cela fonctionne à chaque fois. Il vous suffit de sous-chaîne du message de trace de pile. Vraiment facile! En outre, sur vb.net, vous devez effectuer la procédure "Afficher tous les fichiers". et inclure la pdb.

'Err is the exception passed to this function

Dim lineGrab As String = err.StackTrace.Substring(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 #:

string lineGrab = error.StackTrace.Substring(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++;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top