troushoo

スポンサーサイト

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

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

[Psscor2/Psscor4]!ASPXPages

Psscor2/Psscor4で使用できるコマンド!ASPXpagesについて説明します。!ASPXpagesを利用すると、w3wp.exeにロードされているASPXページを表示することができます。
使用例として、テスターが「ページの読み込みに時間がかかった」という問題を発見した場合のトラブルシューティングを考えます。

今回使用するサイト
以下のようなASP.NETのページを考えます。
Buttonが押されると"ボタンは押されてません"が"ボタンが押されました"に変わる単純なサイトです。
このButtonを押す時の処理に時間がかかっているサイトを例とします。


トラブルシューティング
1. テスターが、Buttonを押すとページの読み込みに時間がかかった、という問題を発見します。
2. テスターが、ページを読み込んでいる時のw3wp.exeのダンプを取得します。
ブラウザのアイコンでページ読み込み中かはわかります。

ダンプを取得する際に、w3wp.exeが64bit OS上で動いておりかつ32bitプロセスとして動いてるときは注意してください。
(その際はこちらこちらをご参照ください。)
今回は64bit OS上の64bitプロセスとして動いているので、通常のタスクマネージャーからダンプを作成しました。

3. 開発者にダンプを送ります。
4. 開発者はダンプをWinDbgで開きます。
x86のダンプの際はx86のWinDbgを、x64のダンプの際はx64のWinDbgを使用する必要があることに注意してください。
5. シンボルの読み込み、Psscor2/Psscor4の読み込みを行います。
今回は.NET 4.0の環境かつx64のダンプであったのでx64用のPsscor4を使用しました。

6. !ASPXPagesを実行します。

ThreadIdがXXXであるものはそのスレッドが終了したものを表しています。現在動いているのはThreaIdが25のものです。
そのスレッドは10 Sec動いていることも確認できます。
7. ~25sでカレントスレッドを25に移し、!clrstackでスタックを見てみます。

現在このスレッドはSleepInternal()になっていることがわかります。
8. SleepInternal()を呼び出し得ているButton1_Click()関数のソースDeffault.aspx.csを見てみます。

protected void Button1_Click(object sender, EventArgs e)
{
    Thread.Sleep(20000);
    Label1.Text = "ボタンが押されました";
}

今回は擬似的にSleep()でスローダウンを発生させましたが、同様の方法でスローダウンの原因がわかりえます。
このようにPsscor2/Psscor4の!ASPXPagesを利用すると、サイトのスローダウンの原因を調べることが可能になりえます。


  1. 2011/12/17(土) 16:03:30|
  2. SOS・Psscor2/Psscor4
  3. | トラックバック:0
  4. | コメント:0
<<[Psscor2/Psscor4]!DumpThreadConfig | ホーム | Psscor2/Psscor4で.NETのデバッグ>>

コメント

コメントの投稿


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

トラックバック

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