BT

.NET/.NET Coreのスタックトレースを洗練

| 作者: Jonathan Allen フォローする 608 人のフォロワー , 翻訳者 編集部T フォローする 1 人のフォロワー 投稿日 2018年2月7日. 推定読書時間: 2 分 |

原文(投稿日:2018/01/29)へのリンク

読者の皆様へ:お客様のご要望に応じて、重要なものを逃すことなく、ノイズを低減できる一連の機能を開発しました。興味のあるトピックを選択して、電子メールとWeb通知を入手してください

例外ベースの言語では、スタックトレースは問題を診断するための最も重要なツールの1つである。場合によっては、特にPersonably Identifiable Information (PII)制約がログとして記録される情報を制限している場合には、簡潔なエラーメッセージとスタックトレースが開発者が利用できる唯一の情報である。

Task Parallel Library (TPL)の出現と、それ以降に現れたasync/awaitでは、スタックトレースの理解がますます困難になっている。有益な情報が複数の例外発生で隠されることは珍しいことではない。

これが実は改善すべき点である。.NET 4.5とExceptionDispatchInfoクラスの導入以前は、スタックトレースはasyncの境界を越えることができず、開発者は代わりに内部の例外を掘り下げる必要があった。しかし、より多くのことができた。

Illyriadというゲームの開発者であるBen Adams氏は、.NET Core 2.1のスタックトレースを改善する役目を自ら引き受けた。彼の改善作業は以下の分野に焦点を当てている。

  1. async/await呼び出しポイントで発生するノイズを除去する。
  2. 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

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT