最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

  • 2018-02-12
  • 本文字数:783 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

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


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-02-12 18:001863

评论

发布
暂无评论
发现更多内容

ESLint-源码分析

Tone荣

前端 eslint

全面解析湖仓一体与大数据演进历程|内含技术工具选型策略

云智慧AIOps社区

数据库 大数据 数据湖 Clickhouse 大数据运维

堡垒机哪家好?贵不贵?作用是什么?

行云管家

堡垒机 等级保护 过等保 等保2.0

学生管理系统 - 详细设计方案

tom

重学架构之外包学生管理系统架构设计文档

陈华英

架构实战营

Flink 新一代流计算和容错——阶段总结和展望

Apache Flink

大数据 flink 开源 编程 实时计算

网易数帆大数据场景下的DataOps实践

网易数帆

大数据 数据治理 DataOps

MongoDB在信息资源共享建设的应用实践

MongoDB中文社区

mongodb

我提交了一个 pr,竟然是为了吃

AlwaysBeta

GitHub 开源 程序员 生活 程序员人生

外包学生管理系统架构设计文档

「架构实战营」

掉入成功的深渊

Shinta

震坤行工业超市研发效能提升之路

阿里云云效

云计算 阿里云 DevOps 云原生 研发

微服务从代码到k8s部署应有尽有系列(三、鉴权)

万俊峰Kevin

微服务 web开发 鉴权 go-zero Go 语言

web前端开发Nodejs的C++ 拓展开发_前端培训

@零度

node.js 前端开发

原生JavaScript灵魂拷问,你能答上多少(一)

战场小包

JavaScript 前端 2月月更

基于Qt设计的学生考勤系统

DS小龙哥

2月月更

G1 面向服务端(多CPU)应用的垃圾回收器

蜜糖的代码注释

Java 垃圾回收器 2月月更

Go学习笔记——复合数据类型

为自己带盐

Go 学习笔记 2月月更

向工程腐化开炮 | manifest治理

阿里巴巴终端技术

App 客户端开发 腐化治理 manifest

MongoDB 数据实时同步利器-Tapdata Cloud 免费上手指南

MongoDB中文社区

mongodb

模块三作业

Leo

外包学生管理系统架构

浪飞

java培训:Netty的内存管理

@零度

Java Netty

低代码实现探索(三十三)前端脚本公式

零道云-混合式低代码平台

如何更好的使用TypeScript

Tone荣

前端 js ts js 转 ts

等保2.0政策之物联网安全扩展要求包括哪四个?

行云管家

云计算 物联网 等保 等保2.0 扩展要求

云计算架构设计6大原则,你遵循了吗?

博文视点Broadview

中国 PostgreSQL 分会加入龙蜥社区,携手共建基础软件开源新生态

OpenAnolis小助手

postgresql Linux 开源

互联网应用开发如何搭上AI的快车?来厦门开发者Meetup一探究竟

百度大脑

「架构实战营」模块三作业 外包学生管理系统架构设计

hxb

「架构实战营」

手把手教学电瓶车进电梯检测、多类别车辆追踪、异常行为检测产业级应用

百度大脑

.NET/.NET Core中更清晰的堆栈跟踪_.NET_Jonathan Allen_InfoQ精选文章