有时我们会从客户那里收到行号错误的堆栈跟踪。这种情况并不经常发生,但有时会让我们感到困惑。
客户已发布经过优化并带有“仅 pdb”调试信息的程序集。
是的,我们将行号与客户拥有的代码版本完全相同。
是的,客户拥有正确的 pdb 文件。
不,行号的这种差异不能用方法内联(编译器优化)来解释。
不,我们不使用任何 AOP 工具,例如 PostSharp。
知道为什么会发生这种情况吗?
最佳答案
不是 .net 专家,但至少在其他语言中,当选择高度编译器优化时,编译器可能会对代码进行重大重新排序。这可能并且通常确实使得将错误源定位到特定行变得非常困难。如果编译器能够跨基本 block 进行优化,那么这种效果可能非常显着,将明显的行位置放在源文件的完全不同的部分中。
关于.net - 堆栈跟踪中的行号错误(发布),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420123/