现在的位置: 首页 > 操作系统 > 正文

.NET/.NETCore中更清晰的堆栈跟踪

2020年02月07日 操作系统 ⁄ 共 976字 ⁄ 字号 评论关闭

在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(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许可。

查看英文原文: Cleaner Stack Traces in .NET/.NET Core

本文永久更新链接地址:http://www.xuebuyuan.com/Linux/2018-02/150918.htm

以上就上有关.NET/.NETCore中更清晰的堆栈跟踪的相关介绍,要了解更多.NET/.NET Core,堆栈跟踪,.NET/.NET Core中更清晰的堆栈跟踪,编程,Linux编程,Linux Shell,Android,Android教程,JAVA,C语言,Python,HTML5内容请登录学步园。

抱歉!评论已关闭.