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