troushoo

Windows Azureのコンピュートエミュレーターに表示されるトレースを、Windows Azure OS上でも簡単に確認する方法

Windows Azureのコンピュートエミュレーターに表示させることができるトレースを、Windows AzureのOSでも簡単に表示する方法を紹介します。
トレースの表示といえばDebugViewが有名ですが、Windows AzureのOSであるWindows Server 2008, 2008 R2ではサポートされておらず、私が試したところトレースが表示されないことが多々ありました。(詳細後述)
そこで、今回はMicrosoftのKBでも紹介されているWinDbgを使った方法を紹介します。

今回利用するサンプルアプリ
サンプルアプリとして、Windows Azure SDK for .NETのWorker Roleのデフォルトのテンプレートを使用します。コードの変更・追加は全く行いません。
トレースの該当部分のコードは以下です。
10秒ごとにTrace.WriteLine("Working", "Information")が実行され、"Information: Working"と表示されることがわかります。

public override void Run()
{
    // This is a sample worker implementation. Replace with your logic.
    Trace.WriteLine("WorkerRole1 entry point called", "Information");
 
    while (true)
    {
        Thread.Sleep(10000);
        Trace.WriteLine("Working", "Information");
    }
}

トレースを確認するには、タスクバーに表示されているWindows Azureのアイコンを右クリックし'Show Compute Emulator UI"をクリックします。

下図のように"Information: Working"と表示されます。

Windows Azure上でトレースを表示する方法
1. Worker RoleのインスタンスにRDP接続します。
2. Debugging Tools for Windowsをダウンロード・インストールします。
MSDNのサイト: Windows 用デバッグツールのダウンロードとインストール より、無料でダウンロード・インストールできます。

以下は「スタンドアロン (独立型) コンポーネントとして Debugging Tools for Windows をインストールする」の部分からダウンロード・インストールしたスクリーンショットです。
2.1. インストールするパスを指定します。

2.2. CEIP(匿名のデータをマイクロソフトに送り製品の向上に役立てるプログラム)に参加するかを選択します。

2.3. いくつかの機能はインストールできない、と表示されますが、WinDbgをインストールするには無視して構いません。

2.4. License Agreementが表示されます。

2.5. Debugging Tools for Windowsにチェックが入っていることを確認します。

2.6. 進捗が表示されます。

2.7. 終了です。

3. cmd.exeを開き、インストールしたWinDbg.exeがあるフォルダに移動し、以下のコマンドを実行します。
Windbg.exe -g -p <WaWorkerHost.exeのPID> –pd
コマンドライン引数の意味は以下です。
・ -g: イニシャルブレークポイントを無視し、デバッガー接続時にWaWorkerHost.exeがブレークしないようにする
・ -p <WaWorkerHost.exeのPID>: WaWorkerHost.exeのPIDを指定
・ -pd: デバッガー終了時にWaWorkerHost.exeが終了しないようにする

補足:WaWorkerHost.exeのPIDはタスクマネージャーで確認できます。

タスクマネージャーのデフォルトの設定では、PIDは表示されません。View -> Select Columsをクリックし、PIDにチェックを入れてください。


4. トレース情報が標示されます。
コンピュートエミュレーター環境同様、"Information: Working"と表示されていることがわかります。

5. 終了する際は、File-> Exitで終了します。

DebugViewでのトレース確認時
DebugViewとはMicrosoftのサイトからダウンロードできるツールで、トレース情報を表示するツールです。
Windows Azure OS上で、DebugViewを利用してトレースを確認しようとすると、以下のようにCPU使用率が100%となりトレースが取得できないことが多々ありました。

DebugViewの再起動やOSの再起動をするとトレースが取得できることもありましたが、DebugViewのホームページによるとDebugViewがサポートしているのはVistaまでで、Windows Server 2008、2008 R2は未サポートのようです。
ちなみにDebugViewでトレース情報が取得できると、以下のようにWindbgと同様"Information: Working"と表示されていることがわかります。

補足
・System.Diagnostics.Trace.WriteLine()をWinDbgに表示させるにはトレースリスナーにDefaultTraceListenerを追加している必要があります。
デフォルトの設定で問題ありません。
トレースリスナーについてはMSDNをご参照ください。

URL
・How To: Output Trace string on machine where Visual Studio is not installed
http://support.microsoft.com/kb/949885


  1. 2012/07/18(水) 16:19:44|
  2. Azure
  3. | トラックバック:0
  4. | コメント:0
<<Process Monitorのインストールからチィップスまで (1) | ホーム | Visual Studio 2012とWinDbgの統合>>

コメント

コメントの投稿


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

トラックバック

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

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

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

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

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