.NET/.NET Core中更清晰的堆栈研究
发布时间:2021-12-05 17:32:36 所属栏目:教程 来源:互联网
导读:在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(PII)约束限制了日志记录的内容时。 随着任务并行库(TPL)的出现以及紧随其后的async/await函数
在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(PII)约束限制了日志记录的内容时。 随着任务并行库(TPL)的出现以及紧随其后的async/await函数,堆栈跟踪变得愈发难以理解。 有效信息被隐藏起来的问题并不罕见。 事实上,该提升不可小觑。 在.NET 4.5早期版本以及引入ExceptionDispatchInfo类之前,堆栈跟踪是无法跨越异步边界的,开发人员将不得不深入探究内部异常问题。但所需研究的工作远不止于此。 Illyriad游戏开发商Ben Adams自行对.NET Core 2.1中的堆栈跟踪进行了改进提升。他的工作主要集中在以下这些领域: 消除由于async/await报警引入的噪音; 显示哪些方法重载是在异步或迭代器上下文中被调用的; 同时,Anirudh Agnihotry更新了Dictionary / ConcurrentDictionary所采用的KeyNotFoundException,以指出哪个关键字还未被发现,这曾是使.NET开发人员重新回到1.0版本的主要困扰。 如果您已在使用.NET Framework,或不想再继续等待.NET Core 2.1版本,那么你还可以通过调用Ben.Demystifier库以使用Ben的工作成果。这种方式可超越.NET Core更新后可满足的功能,并使堆栈跟踪代码更接近于原始C#代码,拥有更好的可读性。 (对于.NET Core而言,这并不能算是可选方式之一,因为在VB或F#堆栈跟踪中出现C#关键字意义不大)。 .NET Core是以MIT许可证发布的。 Ben.Demystifier采用Apache许可。 ![]() (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |