.net - 堆栈跟踪中的行号错误(发布)

标签 .net exception pdb-files

有时我们会从客户那里收到行号错误的堆栈跟踪。这种情况并不经常发生,但有时会让我们感到困惑。

客户已发布经过优化并带有“仅 pdb”调试信息的程序集。

是的,我们将行号与客户拥有的代码版本完全相同。

是的,客户拥有正确的 pdb 文件。

不,行号的这种差异不能用方法内联(编译器优化)来解释。

不,我们不使用任何 AOP 工具,例如 PostSharp。

知道为什么会发生这种情况吗?

最佳答案

不是 .net 专家,但至少在其他语言中,当选择高度编译器优化时,编译器可能会对代码进行重大重新排序。这可能并且通常确实使得将错误源定位到特定行变得非常困难。如果编译器能够跨基本 block 进行优化,那么这种效果可能非常显着,将明显的行位置放在源文件的完全不同的部分中。

关于.net - 堆栈跟踪中的行号错误(发布),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420123/

相关文章:

.net - 限制自定义属性的属性类型

c# - C#中的相同长度输出加密和解密

java - Spring:BeanCreationException

c# - 如何限制 PDB 文件中的 0xFEEFEE 行数

windows - 如何更改年龄不匹配的 PDB 以正确匹配?

c# - 以编程方式读取 Windows 的区域设置

.net - 在 .NET Compact Framework 中获取程序集的版本而不加载它

delphi - 设置未处理异常过滤器 : Continue execution 1 opcode further

java - 如何以OO方式修改返回值设计?

visual-studio - 从 Visual Studio 中的符号服务器加载与正则表达式匹配的特定符号