troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

DebugDiag v1.2を利用した64bit OS上の32bitダンプの取得方法

.NETの場合、64bit OS上の32bitプロセスは、32bitダンプを作らないとVisual Studio・WinDbgともにうまくダンプが読めません。
前回はタスクマネージャーを使用した64bit OS上の32bitプロセスの32bitダンプ作成方法も記述しました。今回はDebugDiag v1.2 (64bit版)を使用した方法を説明します。

DebugDiagとは?
DebugDiagはMicrosoftが無料で提供しているツールでこちらからダウンロードできます。DebugDiagを使用すると、例外発生時に自動でダンプを作成したりといった、より高度な条件でダンプを作成可能になります。

サンプルアプリ
以下の例外を発生させるサンプルアプリ(dumptest.exe)を使用して記述します。

namespace dumptest
{
    class MyException : Exception
    {
        public MyException(string message)
            : base(message)
        {
        }
    }
   
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("例外を発生させるにはEnterを押してください。");
            Console.ReadLine();
            
            throw new MyException("例外");
        }
    }
}

ルール作成
まず、どのような時にダンプを取得するかのルールを作成します。ルールの作成はウィザードに従って直観的に作成できます。
以下は上記のアプリの例外を取得するためのルールです。
1. スタートメニューからDebug Diagnostics Tool 1.2 →DebugDiag 1.2を起動します。
2. Select Rule TypeでCrashを選択します。

3. A specific processを選択します。

4. ダンプを取得したいプロセス(今回はdumptest.exe)を選択します。リストに表示されていなくても”Seleced Process”のところにプロセス名を入れればOKです。

5. Advanced SettingsよりExceptionsをクリックします。

6. Add Exceptionをクリックします。

7. ダンプをとる契機となる例外コード(今回はCLR 4.0の例外)を指定します。Action TypeのところをFull Userdumpにしておきます。

8. 確認画面で確認をし、Save & Closeをクリックします。

9. Advanced Configurationの画面になるので、次へをクリックします。

10. ルールに名前を付けたり、ダンプの出力先を変更できます。

11. ルールを今すぐ有効にするか、しないかを選べます。

12. シンボルを設定するかどうかを聞かれるメッセージが表示されることがあります。今回はどちらでも構いません。

13. このような画面になり、ルールが作成されていることを確認できます。
 

ダンプ取得・調査
デフォルトの設定だとC:\Program Files\DebugDiag\Logs\Crash rule for all instances of dumptest.exeにダンプが出来上がります。First ChanceのダンプとSecond Chanceのダンプ、その時のプロセスのリストが記載されたtxtファイルが出来上がります。

以下は、プロセスのリストが記載されたtxtファイルです。

これをVisual Studioで見ると以下のように、落ちているところがわかります。

WinDbgで見たところです。!clrstackを利用してスタックがわかります。
 

このように64bit OS上の32bitプロセスの32bitダンプをDebugDiag v1.2で作成できます。


  1. 2011/10/06(木) 16:07:00|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0
<<[SOS] !ClrStack:コールスタック表示 | ホーム | .NETの64bit OS上の32bitプロセスのダンプの取得方法>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

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

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。