troushoo

スポンサーサイト

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

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

[SOS] !ClrStack:コールスタック表示

WinDbg等で使用できる.NET用のデバッガエクステンションsosでコールスタックを表示する!ClrStackについて説明します。

今回使用するアプリ
以下のアプリで例外発生時のダンプを調査します。

class Program
{
    class MyException : Exception
    {
        public MyException(string message) : base(message) { }
    }
 
    static void Main(string[] args)
    {
        func(0x1234);
    }
 
    static void func(int a)
    {
        int i = 0x5678;
        Console.Write(a + i);
        throw new MyException("例外");
    }
}

[!ClrStack]
コールスタックを表示します。
0:000> !clrstack
OS Thread Id: 0xea8 (0)
Child SP       IP Call Site
0071f128 76fdb554 [HelperMethodFrame: 0071f128]
0071f200 00b700fb clrstack.Program.func(Int32) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 21]
0071f218 00b70071 clrstack.Program.Main(System.String[]) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 17]
0071f368 72a03570 [GCFrame: 0071f368]

[!ClrStack -l]
-lオプションをつけると、ローカル変数も追加で表示します。
0:000> !clrstack -l
OS Thread Id: 0xea8 (0)
Child SP       IP Call Site
0071f128 76fdb554 [HelperMethodFrame: 0071f128]
0071f200 00b700fb clrstack.Program.func(Int32) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 21]
    LOCALS:
        0x0071f208 = 0x00005678

0071f218 00b70071 clrstack.Program.Main(System.String[]) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 17]
0071f368 72a03570 [GCFrame: 0071f368]

[!ClrStack -p]
-pオプションをつけると、マネージコードフレームの引数も追加で表示します。
0:000> !clrstack -p
OS Thread Id: 0xea8 (0)
Child SP       IP Call Site
0071f128 76fdb554 [HelperMethodFrame: 0071f128]
0071f200 00b700fb clrstack.Program.func(Int32) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 21]
    PARAMETERS:
        a (0x0071f20c) = 0x00001234

0071f218 00b70071 clrstack.Program.Main(System.String[]) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 17]
    PARAMETERS:
        args (0x0071f218) = 0x02ab23dc

0071f368 72a03570 [GCFrame: 0071f368]

[!ClrStack –a]
-aオプションは、-lと-pオプション両方つけた場合と同じです。
0:000> !clrstack -a
OS Thread Id: 0xea8 (0)
Child SP       IP Call Site
0071f128 76fdb554 [HelperMethodFrame: 0071f128]
0071f200 00b700fb clrstack.Program.func(Int32) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 21]
    PARAMETERS:
        a (0x0071f20c) = 0x00001234
    LOCALS:
        0x0071f208 = 0x00005678

0071f218 00b70071 clrstack.Program.Main(System.String[]) [c:\users\eight\documents\visual studio 2010\Projects\clrstack\clrstack\Program.cs @ 17]
    PARAMETERS:
        args (0x0071f218) = 0x02ab23dc


  1. 2011/10/12(水) 14:09:00|
  2. SOS・Psscor2/Psscor4
  3. | トラックバック:0
  4. | コメント:0
<<[SOS]!dumpobj:オブジェクトの詳細表示 | ホーム | DebugDiag v1.2を利用した64bit OS上の32bitダンプの取得方法>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

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

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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

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