6
爲什麼堆棧跟蹤顯示「行0」,,但僅適用於堆棧跟蹤中的一幀?不正確行號的堆棧跟蹤
例如。
...
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
背景:
我有一個與異常失敗,並記錄堆棧跟蹤到其日誌文件的應用程序。構建應用程序時,所有程序集都編譯有完整的調試信息(項目屬性 - >生成 - >高級 - >調試信息 - >完整),因此生成了PDB文件。爲了幫助我診斷錯誤來自哪裏,我將PDB文件放入應用程序的bin
目錄中,並重現該異常。每個堆棧幀的所有行號看起來都是正確的,除了顯示「行0」作爲其來源的例外。
是否優化打開後編譯? (請記住,優化開/關和調試信息的開/關是正交開關。)如果是這樣,那麼抖動可能會選擇進行內聯或其他優化,這可能會使得很難確定原始代碼的位置。 – 2010-05-13 15:27:25
@Eric:是的。有什麼方法可以獲得實際的線路號碼嗎? – adrianbanks 2010-05-13 15:38:02
當然。在關閉優化的情況下編譯它。 – 2010-05-13 17:04:11