troushoo

スポンサーサイト

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

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

[sos]!DumpArray: 配列の情報表示

WinDbg等で使用できる.NET用のデバッガエクステンションsos.dllで、配列の情報を表示する!DumpArrayを紹介します。

【今回使用するサンプルアプリ】
以下の、配列を表示するだけの単純なアプリを使用して、!DumpArrayの使用例を見てみます。

using System;
 
namespace MyDumpArray
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] stringarray = new string[5] { "a", "b", "c", "d", "e" };
            MyFunc(stringarray);
        }
 
        static void MyFunc(string[] arr)
        {
            Console.ReadLine();
            foreach (string s in arr)
            {
                Console.WriteLine(s);
            }
        }
    }
}

このコードの、Console.ReadLine() (= 上コードの赤いところ)でダンプをとって、配列の情報を確認してみます。

【!DumpArray使用例】
0. 準備
Console.ReadLine()でユーザーの入力待ちになったいる状態のダンプをとり、WinDbgで開きます。
ダンプのとり方や、WinDbgのインストール方法は、以前のブログ:.NETアプリのダンプ取得方法からWinDbgを使った調査開始までをご参照ください。

1. シンボル、sos.dllを読み込みます。
以下がコマンド実行例です。
(コマンドの意味の詳細は、以前のブログ:.NETアプリのダンプ取得方法からWinDbgを使った調査開始までをご参照ください。)
.symfix c:\sym
.reload
.loadby sos clr (.NET 4.0/4.5の場合)

2. コールスタックを確認します。
コールスタック確認のため、!ClrStack –pを実行します。
すると、MyFunc(string[] arr)の引数arr のアドレスがわかります。
!ClrStack -p

3. !DumpArrayを実行します。
配列のアドレス(=今回は、文字列配列arrのアドレス)に対して!DumpArrayを実行します。
配列の要素の値も確認できます
!DumpArray

4. 配列の要素オブジェクトの情報を調べるには、!DumpObjを実行します。
以下は、文字列配列arrの3つ目の要素オブジェクト(アドレスは02732490)に対して!DumpObjを実行したところです。
Stringの”c”が格納されていることがわかります。
!DumpObj

リンク
SOS.dll (SOS デバッガー拡張): MSDNによるSOS.dllのコマンド一覧です。
http://msdn.microsoft.com/ja-jp/library/vstudio/bb190764.aspx


  1. 2012/11/13(火) 15:01:53|
  2. SOS・Psscor2/Psscor4
  3. | トラックバック:0
  4. | コメント:0
<<Visual Stdio 2012でサンプルコードのダウンロード | ホーム | Wiresharkでの解析時に役立つTips(2)>>

コメント

コメントの投稿


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

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/88-b0683e9a
この記事にトラックバックする(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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。