簡體   English   中英

如何解釋此C#堆棧跟蹤? 零線錯誤

[英]How do I interpret this C# stack trace? Error on line zero

我在日志(C#ASP.NET應用程序)的堆棧頂部遇到“以下內容,未將對象引用設置為對象的實例”錯誤:

@Web.UI.UserBrochurePage.Page_Load(Object,EventArgs)+25 Line: 0  
@System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr,Object,Object,EventArgs)+0 Line: 0  
@System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object,EventArgs)+26 Line: 0  
@System.Web.UI.Control.OnLoad(EventArgs)+38 Line: 0 
@System.Web.UI.Control.LoadRecursive()+35 Line: 0
@System.Web.UI.Page.ProcessRequestMain(Boolean,Boolean)+1160 Line: 0 

我不明白的事情:

  1. 每個錯誤都在第零行
  2. 最有趣的錯誤(在我的代碼中,最上面的錯誤)后面有一個“ +25”。 盡管我假設它們是行上的字符偏移量,但我從未理解它們的含義……如果是這種情況,它將不會指向任何有意義的內容(參數聲明的中間部分)。

這是處於發布模式的生產系統,但是我通常仍然可以從堆棧跟蹤對象中獲取行號。 不幸的是,在這種情況下,錯誤不會在我們的調試系統上重現,因此我一直竭盡所能。

任何意見,將不勝感激。

謝謝湯姆

我認為您在stacktrace中的每個調用都看到“第0行”,因為您的代碼是在Release模式而不是Debug模式下編譯的。 在調試模式下,您的代碼將被編譯為包含調試符號文件(.pdb)。 當此文件可用時,您的異常堆棧跟蹤將准確表示行號。

無論如何,只有Page_Load的行號才有意義,因為其余的是框架程序集的內部調用。

每個stacktrace條目之后的+ xx數字顯然是“ 本機代碼的字節偏移 ”。 我確實承認,最初看來是執行時間,以滴答或毫秒為單位。

有關了解偏移量的信息,請參見此問題 我懷疑您真的應該只使用調試信息來構建生產二進制文件,這比檢查IL確定偏移量表示哪一行要容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM