Stack-Trace mit falscher Zeilennummer
-
26-09-2019 - |
Frage
Warum sollte eine Stack-Trace-Show "Zeile 0", aber nur für einen Rahmen in dem Stack-Trace
zB.
...
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at My.LibraryA.Some.Method():line 16
at My.LibraryB.Some.OtherMethod():line 0
at My.LibraryB.Some.Method():line 22
at My.LibraryA.Some.Method():line 10
Hintergrund:
ich eine Anwendung, die mit einer Ausnahme fehlschlägt, und ist ein Stack-Trace in seine Protokolldatei protokolliert. Wenn die applciation gebaut wurde, wurden alle Baugruppen mit voller Debug-Informationen kompiliert (Projekteigenschaften -> Build -> Erweitert -> Debug Info -> Full), und so PDB-Dateien generiert wurden. Um Hilfe diagnostizieren mir, wo der Fehler herkommt, ließ ich die PDB-Dateien in die bin
Verzeichnis der Anwendung, und reproduzierte die Ausnahme. Alle Zeilennummern für jeden Stack-Frame-Look richtig, mit Ausnahme von einem, das zeigt „Zeile 0“ als Quelle.
Lösung
Dies war in der Tat auf die der inlining von ihnen Methode als Eric vorgeschlagen.
konnte ich vor Ort die ursprünglichen Fehler reproduzieren, aber nur, wenn sie in einem Release-Build zu kompilieren. Als ich die PDBs hatte, konnte ich Schritt durch den Code und das Problem finden.