5

直到今天,在我的 dll 中,很长一段时间内一切正常,我不知道出了什么问题。从今天开始出现错误的异常行数。

所以在我在 dll 库中的方法中,我插入了一行来抛出不支持的异常,但是我使用调试器或者只是在日志行中看到异常行是错误的!

这是部分代码的图像: 堆栈问题

事实上,例外是在 391 线,直到今天已经很久了。现在在日志中,我看到 776 行,在调试器中也是如此。有人有什么想法吗?

更新 1 05/11/2013

阅读所有答案后(谢谢大家=))这里有一些更新:

pdb 文件是最新的吗?我认为是的,因为我从输出文件夹中删除了所有内容,重建解决方案并看到了同样的问题。我还检查了它的创建日期。

我处于发布模式吗?我认为不是。这是带有构建配置的图像
构建配置

代码优化了吗?我创建了另一个测试并删除了 NotSupportedException 下面的所有内容,但问题仍然在方法的末尾,行是 397 但不是 391,就像我们实际上拥有的那样 调试测试 2

什么是内部异常?无效的 内心异常

4

1 回答 1

5

我几乎肯定你正在以发布模式运行你的程序。

在发布模式下编译时,C# 编译器将通过程序集的DebuggableAttribute.

JIT 编译器很聪明,它会看到第 394 行和第 776 行之间的所有代码都是死代码,因为您正在抛出NotSupportedException.

此外,当我们处于发布模式时,pdb 的信息有限并且启用了 JIT 优化,因此编译器不能总是将异常堆栈映射到它们发生的确切位置。不过,通常离它不远,就可以看到它被扔到了哪里。

于 2013-11-04T17:37:23.077 回答