読者の皆様へ:お客様のご要望に応じて、重要なものを逃すことなく、ノイズを低減できる一連の機能を開発しました。興味のあるトピックを選択して、電子メールとWeb通知を入手してください。
例外ベースの言語では、スタックトレースは問題を診断するための最も重要なツールの1つである。場合によっては、特にPersonably Identifiable Information (PII)制約がログとして記録される情報を制限している場合には、簡潔なエラーメッセージとスタックトレースが開発者が利用できる唯一の情報である。
Task Parallel Library (TPL)の出現と、それ以降に現れたasync/awaitでは、スタックトレースの理解がますます困難になっている。有益な情報が複数の例外発生で隠されることは珍しいことではない。
これが実は改善すべき点である。.NET 4.5とExceptionDispatchInfoクラスの導入以前は、スタックトレースはasyncの境界を越えることができず、開発者は代わりに内部の例外を掘り下げる必要があった。しかし、より多くのことができた。
Illyriadというゲームの開発者であるBen Adams氏は、.NET Core 2.1のスタックトレースを改善する役目を自ら引き受けた。彼の改善作業は以下の分野に焦点を当てている。
- async/await呼び出しポイントで発生するノイズを除去する。
- asyncまたはイテレータのコンテキストで、どのメソッドのオーバーロードが呼び出されたかを示す。
一方、Anirudh AgnihotryはDictionary/ConcurrentDictionaryで使用されるKeyNotFoundExceptionを更新して、どのキーが見つからなかったかを示せるようにした。それまで、KeyNotFoundExceptionはバージョン1.0に戻っており、.NET開発者を悩ませていた。
.NET Frameworkを使用している場合、あるいは、NET Core 2.1を待ちたくない場合でも、Ben.Demystifierライブラリを使用してBenの成果を利用できる。彼の成果は、.NET Coreの変更によってできるようになったことに留まらず、スタックトレースの読みやすさがオリジナルのC#コードに近づけるようにできる(これは.NET Coreのオプションになかった。VBまたはF#スタックトレースでC#キーワードを表示しても役に立たないとしていたためである)。
.NET CoreはMITライセンスで公開されている。Ben.DemystifierはApacheライセンスの下で利用できる。
Rate this Article
- Editor Review
- Chief Editor Action