troushoo

.NET の1st チャンスの例外の情報を、簡単にしかも低負荷で確認する方法 : PerfView


概要

.NET の1st チャンスの例外発生時の情報を、PerfView を用いて簡単に確認する方法を紹介します。

内容

PerfView を用いると、.NET の1st チャンスの例外発生時の、例外メッセージ、コールスタック等が簡単にわかります。
しかも、例外情報の採取にはETW を用いますので、資料採取時の負荷を抑えることができます。

以下、.NET の1st チャンスの例外情報の採取方法、解析方法を紹介します。

PerfView を用いた、.NET の1st チャンスの例外情報の採取方法
1. PerfView をマイクロソフトのサイトよりダウンロードします。
PerfView はフリーで使用することができます。


2. ダウンロードしたZip ファイルを解凍し、PerfView.exe を起動します。


3. 情報採取のため、「Collect」→「Collect」をクリックします。


4. 「Start Collection」をクリックし、情報採取を開始します。
「Current Dir」の「Data File」に、トレース情報が入ったZip ファイルが作成されることになりますので必要に応じて変更してください。


5. .NET の1st チャンスの例外を発生させます。

6. 「Stop Collection」をクリックし、情報採取を終了します。


7. 上記4 で指定したパスにトレース情報が入ったZip ファイルが格納されます。
他のマシンで解析を行いたい場合は、このファイルを他のマシンにコピーします。


PerfView を用いた、.NET の1st チャンスの例外情報の解析方法
1. PerfView を起動し、トレースファイルがあるパスに移動します。


2. トレースファイルのZip ファイルをダブルクリックし「Events」をダブルクリックします。


3. 「Filter」に「exception」と入力し「Microsoft-Windows-DotNETRuntime/Exception/Start」をダブルクリックします。
すると、例外の一覧が確認できます。
例えば以下のスクリーンショットでは、demo.exe で「System.DivideByZeroException」「0 で除算しようとしました。」が発生していたことがわかります。


4. 例外発生時のコールスタックをしらべるために元のビューに戻り「Exceptions Stacks」をダブルクリックしてみます。


5. 調査したいプロセスをダブルクリックします。


6. すると、1st チャンスの例外発生時のコールスタックがわかります。


ちなみに、以下が、今回用いたdemo.exe のソースコードです。

using System;
 
namespace mydemo
{
    class Program
    {
        static double SafeDivision(double x, double y)
        {
            if (y == 0)
            {
                throw new System.DivideByZeroException();
            }
            return x / y;
        }
 
        static void MyMethod()
        {
            double a = 1, b = 0;
            double result = 0;
 
            try
            {
                result = SafeDivision(a, b);
            }catch(DivideByZeroException e)
            {
                Console.WriteLine("Exception happend");
            }
        }
        static void Main(string[] args)
        {
            MyMethod();
        }
    }
}

情報元
Defrag Tools #116 - PerfView Part 4

関連記事
ProcDumpでダンプの取得: v5.0からの新機能
  1. 2015/10/10(土) 22:44:31|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0
<<3rd パーティのドライバーを簡単にバックアップする方法 : Export-WindowsDriver | ホーム | WinInet のトレースを用いて、HTTPS のサイトに入力されたパスワードを確認する方法>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/260-8b4272c9
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する