c# – 在抛出的异常中是否保留了内联函数的堆栈跟踪?
发布时间:2020-12-15 08:47:38 所属栏目:百科 来源:网络整理
导读:在发布模式下编译可执行文件时 – 启用代码优化 – 编译器可以选择内联满足特定条件的函数以提高性能. 我的问题是:当内联函数体中抛出异常时,无论内联扩展如何,都会保留堆栈跟踪信息吗?换句话说,它会将原始函数显示为错误源,还是会显示调用函数? 解决方法
在发布模式下编译可执行文件时 – 启用代码优化 – 编译器可以选择内联满足特定条件的函数以提高性能.
我的问题是:当内联函数体中抛出异常时,无论内联扩展如何,都会保留堆栈跟踪信息吗?换句话说,它会将原始函数显示为错误源,还是会显示调用函数? 解决方法
这取决于抛出异常的方式.如果使用throw语句然后没有问题,则抖动不会内联包含throw的方法.当你需要一个属性设置器快速顺便说一下时要注意的事情.
但是,如果异常是由正常执行引起的,如NullReferenceException或IndexOutOfRangeException等,那么是,如果内联的话,您在堆栈跟踪上看不到该方法的名称.这可能有点令人困惑,但您通常会从调用方法的源代码和异常类型中弄清楚它.希望它相对较小. [MethodImpl(MethodImplOptions.NoInlining)]属性可用于禁止内联.当你发现它会有所帮助时,通常为时已晚;) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |