手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2018-02-13] 来源:infoq.com  作者:Jonathan Allen ,译者 翟雪冰 [字体: ]

在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(PII)约束限制了日志记录的内容时。

随着任务并行库(TPL)的出现以及紧随其后的async/await函数,堆栈跟踪变得愈发难以理解。 有效信息被隐藏起来的问题并不罕见。

事实上,该提升不可小觑。 在.NET 4.5早期版本以及引入ExceptionDispatchInfo类之前,堆栈跟踪是无法跨越异步边界的,开发人员将不得不深入探究内部异常问题。但所需研究的工作远不止于此。

Illyriad游戏开发商Ben Adams自行对.NET Core 2.1中的堆栈跟踪进行了改进提升。他的工作主要集中在以下这些领域:

  1. 消除由于async/await报警引入的噪音;
  2. 显示哪些方法重载是在异步或迭代器上下文中被调用的;

同时,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.linuxidc.com/Linux/2018-02/150918.htm

linux
相关资讯       .NET/.NET Core  堆栈跟踪 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款