.NET/.NET Core中更清晰的堆栈跟踪
在基于異常的語言中,堆棧跟蹤是用于診斷問題最重要的工具之一。在某些情況下,開發(fā)人員能得到的僅為一條簡短的錯誤信息以及堆棧跟蹤,尤其是當個人可識別信息(PII)約束限制了日志記錄的內(nèi)容時。
隨著任務并行庫(TPL)的出現(xiàn)以及緊隨其后的async/await函數(shù),堆棧跟蹤變得愈發(fā)難以理解。 有效信息被隱藏起來的問題并不罕見。
事實上,該提升不可小覷。 在.NET 4.5早期版本以及引入ExceptionDispatchInfo類之前,堆棧跟蹤是無法跨越異步邊界的,開發(fā)人員將不得不深入探究內(nèi)部異常問題。但所需研究的工作遠不止于此。
Illyriad游戲開發(fā)商Ben Adams自行對.NET Core 2.1中的堆棧跟蹤進行了改進提升。他的工作主要集中在以下這些領域:
消除由于async/await報警引入的噪音;
顯示哪些方法重載是在異步或迭代器上下文中被調(diào)用的;
同時,Anirudh Agnihotry更新了Dictionary / ConcurrentDictionary所采用的KeyNotFoundException,以指出哪個關鍵字還未被發(fā)現(xiàn),這曾是使.NET開發(fā)人員重新回到1.0版本的主要困擾。
如果您已在使用.NET Framework,或不想再繼續(xù)等待.NET Core 2.1版本,那么你還可以通過調(diào)用Ben.Demystifier庫(https://github.com/benaadams/Ben.Demystifier)以使用Ben的工作成果。這種方式可超越.NET Core更新后可滿足的功能,并使堆棧跟蹤代碼更接近于原始C#代碼,擁有更好的可讀性。 (對于.NET Core而言,這并不能算是可選方式之一,因為在VB或F#堆棧跟蹤中出現(xiàn)C#關鍵字意義不大)。
.NET Core是以MIT許可證發(fā)布的。 Ben.Demystifier采用Apache許可。
原文地址:http://www.infoq.com/cn/news/2018/02/Core-Stack-Trace
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的.NET/.NET Core中更清晰的堆栈跟踪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ASP.NET Core】给路由规则命
- 下一篇: 一个开源的强类型客户端(.NET 中的