Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://burnlight.blog3.fc2.com/tb.php/363-1e8b0c28

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

silverlight3でのメモリリーク調査しました。(2)

silverlight3でのメモリリーク調査しました。(1) の続きです。

まず用意したもの。
・テスト環境PC
win2008 32bit sp2に.NetFramework 3.5sp1 ,AP位

・windbg
32 ビット版 Debugging Tools for Windows のインストール
からVersion 6.11.1.404 - 2009 年 3 月 27 日をダウンロード

・シンボルファイル
Windows シンボル パッケージのダウンロード
から、Windows Server 2008 SP2 および Windows Vista SP2 x86 製品版シンボル、全言語

インストールして、よーし、

[Silverlight]メモリリークの原因を調べる - 秘密結社ぎゅう☆ぎゅう倶楽部

のようにするぞー とIEのプロセスをアタッチしたら、シンボルファイルエラーとなる。
いくつか見直ししてもだめ。(後で解決したけど)ひとまずほっといて次へ、

.load sos.dll 使用としたら 所定の場所にない。何で??
自分のメイン環境には入っている。??

あー、silverlight3 tools 開発者ランタイムが入っているからそれを使うそうで、

ダウンロードの詳細 : Silverlight 3 Tools

インストール、、、。VisualStudio 2008 sp1 が入ってないとだめ!!

VS2008sp1インストールには2時間かかるのであきらめ。

silverlight SDK ならいいかと思い、ダウンロードし、
今まで入ってたsilverlight3 ランタイムをアンインストールした後 SDKインストール。
ダウンロードの詳細 : Microsoft® Silverlight™ 3 ソフトウェア開発キット (SDK)

で、siliverlightアプリ実行しようとしたらランタイム入ってない!!
ダウンロードの詳細 : Microsoft® Silverlight™ 3 ソフトウェア開発キット (SDK)
に書いてある

Silverlight 3 アプリケーションを構築するには、ここから Silverlight 3 for Developers をインストールできます。
ここからランタイムをダウンロード インストールして

あー、やっとsos.dll がありました。

silverlightアプリを実行しようとすると バージョンが古いエラーで動かない!!

えー、開発ランタイムにバージョン違いがあるとは。色々探して
MSDN Silverlight デベロッパー センター
の下の方の
お勧めsilverlightダウンロード の一番上の
Silverlight 3 開発者用ランタイム Windows 用
をダウンロードしてインストール、実行したら上手く実行できました。

ファイル名にバージョン含まれてないし、リンクのアドレスにもバージョン情報がないのでわかりにくいですねぇ。

で、やっと windbg を見てみると、シンボルが読み込まれていないエラーでます。

シンボルパッケージをC:\symbols にインストールしてパス指定したけどだめです。

こないだwindbgを使ってた人に話をきくと、どうも.NET Framework3.5sp1を当てるか何かで
シンボルパッケージのは使えなくなるので、シンボルサーバから取ってくるしかない。

え!どうりでどこを検索しても、シンボルのパス指定には
SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
の記述ばかりな訳です。

オフライン環境なのでどうしようかと思ってたら、以前他のマシンで
ダウンロードしたシンボルファイルを持ってるというのでコピーさせてもらいました。

そこで 再読込するとなるほどアドレス解決されてます。

シンボルファイルの確認方法|窓のくすり箱
にあるような感じで試します。

で、ようやく
[Silverlight]メモリリークの原因を調べる - 秘密結社ぎゅう☆ぎゅう倶楽部

での、
.load C:\\Program Files\\Microsoft Silverlight\\3.0.40818.0\\sos.dll
をやろうとするとエラーです。

パス違いは問題ないのですが、どうも \\ だとダメで \ なら通りました。

最後に、
!dumpheap -stat -type 自分のアプリケーション名

自分のアプリケーション名の入力がわからなかったので、

最初に
!dumpheap -stat
だけにすると、すごく時間かかりました。
しかしアプリ名がわかったので、-type 付けて絞り込み。

ここで go, break !dumpheap しながら、とあるオブジェクトの数が
操作する度に増えていくのがわかりました。(T_T)


あー、これからやっと本番か、、、、。

他に参考にした記事。
CLR 徹底解剖: メモリの問題を調べる
管理者は見た!~AD と ILM 一家の秘密~ : [Debugging] Windbg を使ってご機嫌ナナメな彼女の心を激しくデバッグ!(1) / 3
Japan WDK Support Blog : メモリダンプに !analyze -v するまで・後編 ~ ダンプを開く~
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://burnlight.blog3.fc2.com/tb.php/363-1e8b0c28

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

burnlight

  • Author:burnlight
  • 忘れないように色々メモします。

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

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