Anzeigezeilen Nummer im Stack-Trace für .NET-Assembly in Release-Modus
-
06-07-2019 - |
Frage
Gibt es eine Möglichkeit für den .NET-Assembly build / Einsatz in Release-Modus die Zeilen in dem Stack-Trace angezeigt werden?
UPDATE:
Meine Anwendung ist in drei Klassenbibliothek Projekte und eine ASP.NET „Website“ Projekt. Der Fehler, den ich auf der Spur bin versucht, ist in einen der drei Klassenbibliothek Projekte. Ich entfalteten nur die PDB-Datei für die Klassenbibliothek Projekt, das den „Objektverweis nicht auf eine Instanz eines Objekts“ Fehler generiert.
Die Zeilennummern zeigen noch nicht in dem Stack-Trace auf. Muß ich die PDB-Dateien bereitstellen für alle Projekte die Zeilennummern in dem Stack-Trace zu bekommen?
Arbeitslösung
Bereitstellen der PDB-Datei für jede Anwendung die Zeilennummer Problem behoben.
Lösung
- Gehen Sie in das Eigenschaftenfenster für das Projekt, in dem Sie Stack-Trace Zeilennummern angezeigt werden sollen.
- Klicken Sie auf das Build "vertikale Reiter".
- Wählen Sie "Release" Konfiguration.
Überprüfen Sie den DEBUG konstanten Parameter. - Deaktivieren Sie die „Code optimieren“ Parameter, um die gelegentliche Spur Problem mit inlined Code (dieser Schritt ist nicht wesentlich) zu vermeiden.
- Drücken Sie die Schaltfläche Erweitert ... und wählen Sie Output -> Debug Info -> PDB-only.
- Stellen Sie die erzeugte PDB-Datei mit der Montage.
Realisiert mit dem Kommentar unter:
- Eine andere Sache zu prüfen, ist in der „Verpackung / Publish Web“ Abschnitt, der die „erzeugt ausschließen Debug-Symbole“ Checkbox auch nicht markiert ist
Andere Tipps
In VS2012 müssen Sie „Symbole ausschließen erzeugt debug“ im Paket deaktivieren / Web veröffentlicht Abschnitt der Eigenschaften als auch.
Meine Lösung
Kopieren PDB-Datei in denselben Ordner, ausführbare Datei.
Jetzt kann ich die Zeilennummer anzeigen, wenn die EXE-Datei ausgeführt werden.
Dies ist Grund
http://msdn.microsoft. com / en-us / library / ee416588% 28v = VS.85% 29.aspx
Ich habe Probleme in der Vergangenheit laufen, wo ich das Bedürfnis, PDB-Dateien mit einem Release-Build, um einen Fehler auf die Spur zu implementieren. Der Grund dafür ist, wie Sie gesagt hat, war, dass die Ausnahme in einem Verfahren aufgetreten, das war sehr groß und ich konnte nicht genau erkennen, wo es geschieht.
Dies könnte ein Hinweis darauf sein, dass das Verfahren in kleinere, feinere Methoden Refactoring werden muss. Nicht ein one size fits all Antwort, aber dieser Ansatz hat mich gut auf kurze Sicht serviert (ich habe festgestellt, oft den Fehler während des Refactoring) und auf lange Sicht.
Nur so ein Gedanke.
debug Fügen Sie Symbole mit Ihrem Build / Bereitstellungspaket.
In VS 2008 Express, fand ich es unter Projekteigenschaften -> Übersetzen. -> Erweitert Kompilierungsoptionen
Das funktioniert jedes Mal. Sie müssen nur die Stack-Trace Nachricht an String. Real Easy! Auch in vb.net Sie müssen die „Alle Dateien anzeigen“ und schließen die pdb tun.
'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
C # Version:
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++;
}