我在日志(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
不明白的地方:
- 每个错误都在第零行
- 最有趣的错误(在我的代码中排名第一)后面有一个“+25”。我一直不明白这些是什么意思,虽然我假设它们是行中的字符偏移量……如果是这样的话,它不会指向任何有意义的东西(参数声明的中间)。
这是一个处于 Release模式的生产系统,但我通常仍然可以从堆栈跟踪对象中获取行号。不幸的是,在这种情况下,错误不会在我们的调试系统上重现,所以我只能尽力而为。
如有任何建议,我们将不胜感激。
谢谢, 汤姆
最佳答案
我认为您在堆栈跟踪中看到每个调用的“第 0 行”,因为您的代码是在 Release模式而不是 Debug模式下编译的。在 Debug模式下,您的代码将被编译为包含调试符号文件 (.pdb)。当此文件可用时,您的异常堆栈跟踪将准确地表示行号。
在任何情况下,只有您的 Page_Load 的行号是重要的,因为其余的都是框架程序集的内部调用。
每个堆栈跟踪条目后的 +xx 数字显然是“byte offset into native code”。我承认,最初在我看来,这是以滴答或毫秒为单位的执行时间。
关于c# - 我如何解释此 C# 堆栈跟踪?零行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771272/