メモリリークの障害を排除するために、デバッグ診断ツールを使用します

私の以前のブログ記事(でSQL Serverのメモリリーク)、私がする方法を説明し、「ヒープ!」メモリリークを識別するためのコマンドモジュールを使用します。時々 、私たちはメモリモデルを見つけるか、検索コマンド(複数可)を使用するように「!D」コマンドを使用すると、表示メモリの原因を見つけることができません。

この場合、我々は、メモリリークを追跡するために、デバッグ診断ツールやUMDHを使用することができます。このブログ記事は、メモリリークを識別するために、デバッグ診断ツールを使用する方法について説明します。

ダウンロードしてインストールデバッグの診断ツールをhttp://www.microsoft.com/en-us/download/details.aspx?id=26798から

1.ターゲットツール、「オプション」 - >「環境設定」、 「レコードのコールスタックを選択すぐにリークを監視するとき」。

clip_image0021.jpg


2.「ルール」タブに移動し、「ルールを追加」を選択します。

3.「ナイーブ(非ネット)メモリリークを選択し、漏れを扱います」。

4. [SQL Serverまたはメモリリークを追跡するための任意のプロセス。

5.「次へ」およびデフォルトのオプションを(ルールが完了または失敗したとき、あなたは「自動アンロードリークトラック」を選択することができます)のまま 。

6.「次へ」をクリックして、今のルールをアクティブにします。

7.Leaktrack.dllは年の分布を追跡するためのプロセスに追加されました。

8.今、あなたは再びリークを待つことができます。

1
2
3
4
5
6
7
-- If you are learning how to troubleshoot SQL Server memory leak follow the steps which we followed in previous post (https://mssqlwiki.com/2012/12/04/sql-server-memory-leak/)to leak the memory.
-- Download HeapLeak.dll from this link.
-- Create  an extended stored procedure in SQL Server
sp_addextendedproc ‘HeapLeak’,‘C:\HeapLeakdll\HeapLeak.dll’
-- Let us execute this Extended SP 30 times and leak memory.
exec  HeapLeak
go 30


9.あなたがメモリリークが疑われる場合は、「ルール」へ、そして右クリックし、完全なダンプ「リークルール」を実行するためにユーザをナビゲートすることで。

clip_image004.jpg


ダンプがキャプチャされた後10、高度な分析]タブに移動し、データファイルを追加し、我々が生成するダンプを選択します。

11.標的化ツール、「オプション」 - >「分析のためのシンボルパスを設定します」。以下のデフォルトのMicrosoftのシンボルパス。

SRVの*のC:\ Websymbols *のhttp ://msdl.microsoft.com/download/symbols; C:\リリース
重要:使用してSQL ServerがDLLの代替cのシンボルパスにロードされます:\リリース(オプション)

12使用可能なスクリプトの解析では、メモリ圧力アナライザ(メモリanalysis.asp)を選択します。

13.「分析の開始」。

clip_image006.jpg


14時間過ごしたロードシンボル解析は、少し時間がかかることがあります。分析が完了したら、それはHTML形式のレポートを生成して開きます。Cにデフォルトで保存されたHTMLレポート:\プログラムファイル\ DebugDiag \は \ Reportsのその後の参照のために使用することができます。

私はここheapleak.dllメモリリーク、http://sdrv.ms/TH1qfRを使用する際に収集したサンプルレポートを添付しました。あなたはそれを参照として使用することができます。

デバッグ診断ツールメモリ圧力計は、テーブル次のレポートやアナリストは、メモリをまとめたものが生成されます。

1
2
3
4
5
6
7
sqlservr.exe__…………dmp
    Virtual Memory Analysis Report
    Heap Analysis Report
    Leak Analysis Report
    Outstanding allocation summary
     Detailed module report (Memory)
     Detailed module report (Handles)

15.分析は、位置決めリークメモリのかなりの部分をモジュールレポートにまとめられています。次のレポートを確認します。

clip_image008.jpg


16.報告書は明らかに255メガバイトHeapLeak.dll重要な割り当てがあることが示されました。オフセットでメモリ23を割り当てるための「サブ」機能でheapleak.dllで。

17.仮想メモリの概要を確認します。これは、仮想メモリアドレス分配孔ホームについての完全な画像を提供します。以下の要約は、32ビットのSQL Server年間で通常である1.57ギガバイト、に保持さが、272.94メガバイトローカルヒープメモリが正常でないがありますされています。

ヒープの概要を表示、50のスタックがあります。

clip_image010.jpg

clip_image012.jpg18.今、重要な割り当ての概要を参照してください。これは、流通およびサイズ分布の前にモジュール10の合計数を示します。以下の要約HeapLeakで26182サイズの占有255.6メガバイト
注意:それはHeapLeakであるが、実際にはそれがどんなリークメモリモジュールであってもよい。この報告書では。

clip_image014.jpg


19.あなたは、詳細なレポートモジュール(メモリ)も見ることができます。(あなたがすべて読み込まれたモジュールのシンボルを設定している場合)には、メモリを割り当てるために、各モジュールとソース線と機能から、メモリ割り当てを与えます。

clip_image016.jpg


私たちは今、14点の位置が機能するためのサブ行番号に255メガバイト、そして未発表HeapLeak.dllが割り当てられていることを確認してください。このレポートはまた、あなたの関数は、メモリのコードパスを割り当てたときに示しコールスタックの例を示します。参考例HTMLレポートファイルhttp://sdrv.ms/TH1qfR

 

おすすめ

転載: www.cnblogs.com/lidabo/p/11419944.html