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.

War es hilfreich?

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++;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top