堆栈跟踪的行号不正确

时间:2010-05-13 15:08:22

标签: c# .net stack-trace line-numbers

为什么堆栈跟踪显示“第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行”作为其来源的行号除外。

1 个答案:

答案 0 :(得分:3)

这确实取决于埃里克建议的内联方法。

我设法在本地重现原始错误,但仅限于在发布版本中进行编译时。由于我有PDB,我可以逐步完成代码并找到问题所在。