Umdhtools.exe: Umdh.exe を使用してメモリ リークを検索する方法

文書翻訳 文書翻訳
文書番号: 268343 - 対象製品
この記事は、以前は次の ID で公開されていました: JP268343
すべて展開する | すべて折りたたむ

目次

概要

ユーザー モードのダンプのヒープ (UMDH) ユーティリティと連携します。オペレーティング システム Windows のヒープの割り当ては、特定のプロセスを分析します。このユーティリティとそれに関連するその他のツールは、主に対象とします。Windows 2000 と Windows XP の。このストリーミング メディア デモを表示するのには、[再生] ボタンをクリックします。

注: ACELP ? コーデック ビデオをされているで利用できる無料の ACELP ? コーデックをインストールする必要があります。 http://www.acelp.net/acelp_eval.php



メモ Malloc関数は C ランタイム (CRT) のモジュールでフレーム ポインターの省略 (FPO) のオリジナル リリースの Windows Server 2003 で使用するため、 malloc関数の完全な履歴情報を UMDH を使用して表示されません。この問題は、Windows Server 2003 Service Pack 1 (SP1) の CRT モジュールで固定されています。したがって、malloc 関数では、Windows Server 2003 SP1 の完全なスタック情報を参照してくださいすることができます。

詳細

UMDH を使用する前に

メモリ リークが発生していることを考えると、しています。メモリ リークが発生が表示されます可能性があります。気づくかもしれませんがメモリ リークが発生のために真のメモリ リークではありませんが、パフォーマンスが向上します。を例は、大量のメモリ、Microsoft Jet データベース エンジンを使用できます。最大 128 MB、256 MB のコンピューターのデータを取得して書き込みますのでキャッシュされます。高速な先行読み取りと先行書き込みを取得するのには、Jet エンジンのキャッシュの許可します。バッファリングします。

プロセスが発生しているかどうかを確認するのにはメモリ リークを Windows パフォーマンス モニター (Perfmon.exe) を使用して、秘密の監視プロセス アプリケーションのカテゴリでのバイト数です。プライベート バイトのですがこのプロセスが割り当てたを共有されていないメモリの総容量処理します。これは仮想バイトから別です。監視するのには次のように興味深い。仮想バイト数が現在のサイズ (バイト数)、プロセスの仮想アドレス空間。アプリケーションは仮想のリークが発生することができます。メモリに割り当てられたプライベート バイトの違いが見えないことがありますが。場合メモリの増加が表示されない場合は、プライベート バイトを監視します。、を参照してくださいするのには、モニターの仮想バイトのメモリが不足が実行されていることと思われます。仮想メモリを使用している場合。メモリ リークが発生し、Windows のパフォーマンス モニター (Perfmon.exe) の概要についての検出の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/en-us/library/ms404355.aspx
アプリケーションがメモリをリークしているかどうかを確認するにはコードでは、繰り返しループに、疑いがあるし、秘密の監視と仮想バイトのメモリの増加します。見ることを確認するのにはプライベート バイトと仮想バイトで、最終的には同じ状態になっていませんし、数は増加を停止します。ある場合は、メモリが停止するポイント大きくすると、(たとえば、その無限に上昇を続けない) します。メモリ リークが発生は可能性が高いに成長しているが、キャッシュを参照してください、最大サイズです。

場合は、メモリ リークが発生する前に参照してくださいことを確認します。UMDH を使用して、次の手順を実行します。
  1. UMDH ユーティリティをインストールします。
  2. 含める、PATH システム環境変数を設定します。UMDH をインストール フォルダーです。
  3. _NT_SYMBOL_PATH 環境変数を設定するのにはMicrosoft シンボル サーバーのパスの UMDH がデバッグ シンボルを検索することができますようにファイルです。
UMDH ユーティリティは用のデバッグ ツールが含まれていますWindows 製品には、次のマイクロソフト Web サイト:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
ダウンロードして、ユーティリティをインストールし、システムのパスを設定デバッグ ツールがインストールされている環境変数。

UMDH を使用する前に、適切なデバッグ シンボルをインストールする必要があります。アプリケーションとオペレーティング システムのコンポーネントです。Microsoft を使用してください。シンボル サーバーを使用して Microsoft コンポーネントのデバッグ シンボルを取得します。 詳細についてはMicrosoft のシンボル サーバーについては、マイクロソフト サポート技術情報の資料を参照する次の資料番号をクリックします。
311503Microsoft のシンボル サーバーを使用するデバッグ シンボル ファイルを入手するのには
UMDH を使用してシンボル ファイルを検索を試みます、_NT_SYMBOL_PATH 環境変数です。コマンドからのパスを設定するのにはコマンド プロンプト、次のように可能性があります。
set _NT_SYMBOL_PATH=SRV*c:\LocalSymbolCache
シンボリック デバッグの設定について詳細は、この資料の「デバッグ シンボル」を参照してください。

次の手順を完了したら、UMDH ユーティリティを使用します。

UMDH をダンプのヒープをキャプチャ

UMDH は、ヒープに関する情報をダンプするユーティリティです。プロセスの割り当て。このコール スタックをとおり割り当て、コール スタックによって行われた割り当ての数やコール スタックで消費されるバイト数です。例を示します。
00005320 bytes in 0x14 allocations (@ 0x00000428) by: BackTrace00053
           ntdll!RtlDebugAllocateHeap+0x000000FD
           ntdll!RtlAllocateHeapSlowly+0x0000005A
           ntdll!RtlAllocateHeap+0x00000808
           MyApp!_heap_alloc_base+0x00000069
           MyApp!_heap_alloc_dbg+0x000001A2
           MyApp!_nh_malloc_dbg+0x00000023
           MyApp!_nh_malloc+0x00000016
           MyApp!operator new+0x0000000E
           MyApp!LeakyFunc+0x0000001E
           MyApp!main+0x0000002C
           MyApp!mainCRTStartup+0x000000FC
           KERNEL32!BaseProcessStart+0x0000003D
				
この UMDH 出力を示しています 21,280 (0x5320) バイトコール スタックから合計します。21,280 バイト 20 から割り当てられた (0x14)1,064 バイト (0x428) の割り当てを分離します。コール スタックを指定します。BackTrace00053 の識別子です。

ヒープのダンプ ファイルを生成するのには割り当てに含まれている、Gflags.exe ユーティリティを使用する必要があります。オペレーティング システムを確認するのには、Windows 用デバッグ ツールの製品カーネルに割り当ての追跡をします。

ことを前提としていますNotepad.exe は、heap(s) の内容をダンプするのには。最初のスタック トレースを有効にする必要があります。アプリケーションの取得をテストします。既定では、この機能では有効になっていません。この機能を有効にするのには、コマンドは次のとおりです。
gflags-i notepad.exe + ust
コマンドはプロセスのスタック トレースを有効にしません。既に実行している場合が、有効に将来のすべての実行のためのスタック トレースNotepad.exe。 別の方法として、GFLAGS ユーザーからのフラグを設定できます。(Gflags.exe ユーザー インターフェイスを取得するのには、引数なしで実行) インタ フェースです。使用します。時にスタック トレースを無効にするのには、gflags で-ustオプションデバッグを終了します。

Gflags.exe をイメージ フラグを設定すると、上のデバッグ シンボルを設定、(メモ帳を起動する準備ができています。UMDH を使用しているアプリケーション)。プログラム開始後は、する必要があります。だけで開始されたメモ帳のプロセスのプロセス ID (PID) を特定します。このコマンドは次のとおりです。
tlist
TLIST アプリケーションの PID を参照してください。PID 情報は、タスク マネージャーからも取得できます。PID を前提としています。開始した Notepad プロセス 124 です。UMDH を使用することができますを取得するのにはヒープのダンプは、次のコマンド:
umdh -p:124 -f:notepad124.log
結果: ヒープ全体のダンプのメモ帳のプロセスがあるのNotepad124.log ファイルです。このファイルがすべて行われた割り当てを示していて、コール スタックの割り当てが行われました。

UMDH ログを比較する Umdh.exe を使用します。

UMDH ログ ファイルについての貴重な情報が含まれていますが、検索を懸念がある場合は、プロセスのヒープの現在の状態をメモリ リークがある可能性がありますの 2 つのログ出力を比較するのには、もっと重要などのようなコール スタックが 2 つのダンプ間で最大となる増加があるかを確認します。Umdh.exe ユーティリティでの分析を提供する 2 つの UMDH ログを比較することができます、それらの違いを作成します。1 回、2 つのログを別の取得があります。間隔は、次のコマンドを使用します。
UMDH dh1.log dh2.log > cmp12.txt
- または -
UMDH-d dh1.log dh2.log > cmp12.txt
-Dコマンド ライン オプションの代わりに 10 進数で表示するのには、UMDH に指示します。16 進数。コマンドの出力の違いを比較します。割り当ては、2 つのログに記録し、いるような情報を提供次:
+ 5320 (f110 - 9df0) 3a 回数 BackTrace00053増加の合計 5320 = =
各バック トレース、UMDH ログ ファイルには、比較は2 つのログ ファイル間で行われました。ここにいる最後のログ ファイルが表示されます。UMDH で指定されているバイト中に最初のコマンドライン必要があります。同一 BackTrace 0x9DF0 バイト、UMDH コマンドラインでログをいた(呼び出し履歴)。「5320」は、割り当てられたバイト数の違いです。でこの場合、0x5320 バイトが割り当てられるまでの時間帯が発生しました、2 つのログを取得します。によって識別される、このコール スタックからバイト数を付属"BackTrace00053"。

次のステップは何であるかを確認するのにです。バック トレースします。"Backtrace00053"を検索して 2 番目のログ ファイルを開くと、次のようなようながあります。
00005320 bytes in 0x14 allocations (@ 0x00000428) by: BackTrace00053
           ntdll!RtlDebugAllocateHeap+0x000000FD
           ntdll!RtlAllocateHeapSlowly+0x0000005A
           ntdll!RtlAllocateHeap+0x00000808
           MyApp!_heap_alloc_base+0x00000069
           MyApp!_heap_alloc_dbg+0x000001A2
           MyApp!_nh_malloc_dbg+0x00000023
           MyApp!_nh_malloc+0x00000016
           MyApp!operator new+0x0000000E
           MyApp!LeakyFunc+0x0000001E
           MyApp!main+0x0000002C
           MyApp!mainCRTStartup+0x000000FC
           KERNEL32!BaseProcessStart+0x0000003D
				
呼び出し履歴を表示すると、 LeakyFunc関数を通じて Visual C++ ランタイム ライブラリのメモリを割り当てること参照してくださいすることができます。演算子新しい関数です。場合は、割り当ての数が増大することを見つける多くのダンプ ファイルを取得し、メモリと結論付けることが解放されていません。

スタック トレースの有効化

UMDH ログにおける最も重要な情報のスタック トレースです。ヒープの割り当てをします。プロセス ヒープをリークするかどうかことを確認するのには、分析することができます。メモリです。既定では、これらのスタック トレースを取得されません。これを有効にすることができます。各プロセスまたはシステム全体の機能です。次のコマンドを使用して、スタックを有効にするのにはシステム全体をトレースします。
gflags-r + ust
このコマンドの後、コンピューターを再起動します。プロセスあたり有効にすると、コマンドは次のとおりです。
gflags-i APPNAME + ust
ここAPPNAME拡張子 (を含む実行可能ファイルのファイル名です。例は Services.exe、Lsass.exe)。コマンドのスタック トレースを有効にしません。プロセスは既に実行されています。することはできませんプロセスのため、(サービス、lsass、winlogon) を再起動し、テストを再開する必要があります。コンピューターです。

次のコマンドを使用して、どのような設定があることを確認するのにはシステム全体または特定のプロセスに対して設定されました。 システム全体に及ぶ。
gflags-r
特定のプロセス。
gflags i アプリケーション名
既定では、最大スタック トレース深度は 16 です。たい場合深いコール スタックを参照してください、GFLAGS を実行することによって向上できます。オンにしますシステム レジストリ、および最大の新しい深さを入力します。トレースのキャプチャの深さを積み重ねコントロールを編集します。[適用] をクリックし、コンピューターを再起動します。
重要: Windows NT 4.0 Service Pack 6 を使用している場合は、使用する必要がありますUmdh.exe をし、代わりに Umdh_nt4.exe をする必要がありますを使用して、 gflags-r システム全体のスタック トレースを設定するコマンドです。確認します、コンピューターを再起動します。Umdh_nt4 のスタックのトレース動作しないのは、1 つのプロセスWindows NT バージョン 4 にします。システム全体に設定する必要があります。

デバッグ シンボル

UMDH を使用して、最も重要な手順の 1 つをすることです。適切なスタック トレースを取得するのには、適切なシンボル ファイル (.dbg または .pdb ファイル) があること。少なくとも、Kernel32.dbg および Ntdll.dbg シンボル ファイルする必要があります。することができます。詳細を調べる場合は、必要があります追加のデバッグ シンボルを取得します。どのコンポーネントでメモリをリークします。 詳細についてはデバッグ シンボル ファイルの入手方法についてコンポーネントには、マイクロソフト サポート技術情報の資料を参照する次の資料番号をクリックします。
311503Microsoft のシンボル サーバーを使用するデバッグ シンボル ファイルを入手するのには
使用する方法の詳細については、Microsoft シンボル サーバーと Windows シンボル パッケージの入手方法を参照してください、次のマイクロソフト Web サイト:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
Visual C++ コンポーネントをビルドすると、重要です、プログラム データベース編集はおらず、C++ の続行を選択コンパイラ オプション。代わりに、プログラムのデータベースを選択します。シンボル パスを設定するのには、_NT_SYMBOL_PATH 環境変数を使用すると、パスを初期化します。はMicrosoft のシンボル サーバーのシンボルを取得できます。コンポーネントです。
311503 Microsoft のシンボル サーバーを使用するデバッグ シンボル ファイルを入手するのには
_NT_SYMBOL_PATH を設定するのには、次の手順を実行します。環境変数:
  1. コントロール パネルの [システム] をダブルクリックします。
  2. [詳細設定] タブをクリックしをクリックして環境変数します
または、_NT_SYMBOL_PATH 環境変数を設定するのにはUMDH を実行する前にコマンド ウィンドウ。

: 同様のコンポーネントの Pdb へのパスを含めることも、アプリケーションです。たとえば、_NT_SYMBOL_PATH のパスは次のように設定します。
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\myapplicationssymbols
Microsoft のシンボル サーバーにこのパスの最初の部分を指す状態および状態の c:\symbols で使用されているシンボルをダウンロードするようにフォルダーです。セミコロンの後に続く部分の PDB ファイルへのパスです。(シンボル ファイル) リーク アプリケーションを具体的にします。

UMDH の呼び出し

唯一の必要なコマンド ライン パラメーター UMDH を-pオプションは、元となるプロセスの PID が指定されるヒープダンプを取得します。タスク マネージャーを使用して PID を取得することができますまたは、Tlist.exe プログラムです。コマンドは次のようなログになります標準出力にダンプします。
umdh p: PID
UMDH はさまざまな情報メッセージを表示します。エラーをクリックし、リダイレクトを行わない場合は、そのため、実際のログと混在しています。UMDH の情報メッセージをファイルに収集するのには、次のコマンドを使用します。
umdh p: PID 2>umdh.msg
UMDH をファイルにダンプされたログを収集する場合は、次のコマンドのいずれかを使用します。
umdh p: PID > umdh.log
- または -
umdh p: PID ・ f:umdh.log
これらのコマンドは等価です。

デフォルトのログは取得した UMDH にはによって並べ替えられたヒープ コンシューマーの列挙体が含まれています割り当ての数。デバッグ用のダンプ ファイルをすべて必要もと、-dオプションの割り当てのブロックには対応するスタック トレースを使用できます。
umdh p: PID d
このコマンドを使用する場合は、UMDH をで、次を参照してください可能性があります。ログ ファイル:
割り当てのトレース BackTrace00046: 005F69A0005F6150
これらの割り当てはメモリ アドレスです。コール スタック。デバッガーがプロセスにアタッチされている場合は、ダンプすることができます、何が割り当てられているを参照してくださいするのには、次のアドレスでメモリの内容です。

ログに大量の情報が含まれている場合は、のみに限定することができます。割り当てを持つ大規模なユーザーが特定のしきい値の上をカウントします。使用して、次のコマンド:
umdh p: PID t: しきい値
すべてのコマンド ライン オプション (たとえば-p、-f、-t、-d) は、任意の順序で同時に指定できます。次のことを困難なコマンドラインの例:
umdh p: 123 -t: 1000、f:umdh.log-d
このコマンドは、PID 123 を持つプロセスのヒープをダンプします。Umdh.log ファイル。そのアカウントは、1000 以上のスタック トレースのみをダンプします。割り当てとは、ヒープ ブロックのアドレスもダンプします。各スタック トレースで割り当てられました。

もう 1 つの便利な UMDH オプションです。-lのオプションです。これを印刷する、ファイルと行番号が、コール スタック可能な限り。

UMDH 出力の説明

場合は、ログ ファイルにリダイレクト (umdh p: PID-f:umdh.log)、コンテンツが取得された、次のようなであります。実行しているメモ帳のプロセス。
UMDH: Logtime 2000-06-28 10:54 - Machine=MYMachine - PID=704
   *********** Heap 00270000 Information ********************
       Flags: 58000062
       Number Of Entries: 87
       Number Of Tags: <unknown>
       Bytes Allocated: 00008DF0
       Bytes Committed: 0000A000
       Total FreeSpace: 00001210
       Number of Virtual Address chunks used: 1
       Address Space Used: <unknown>
       Entry Overhead: 8
       Creator:  (Backtrace00007)
           ntdll!RtlDebugCreateHeap+0x00000196
           ntdll!RtlCreateHeap+0x0000023F
           ntdll!LdrpInitializeProcess+0x00000369
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007
   *********** Heap 00270000 Hogs ********************
   000001A0 bytes in 0x4 allocations (@ 0x00000068) by: BackTrace00031
           ntdll!RtlDebugAllocateHeap+0x000000FB
           ntdll!RtlAllocateHeapSlowly+0x0000005B
           ntdll!RtlAllocateHeap+0x00000D81
           ntdll!LdrpAllocateDataTableEntry+0x00000039
           ntdll!LdrpMapDll+0x000002A4
           ntdll!LdrpLoadImportModule+0x0000010D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpInitializeProcess+0x000009DC
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007

   000001A0 bytes in 0x4 allocations (@ 0x00000068) by: BackTrace00034
           ntdll!RtlDebugAllocateHeap+0x000000FB
           ntdll!RtlAllocateHeapSlowly+0x0000005B
           ntdll!RtlAllocateHeap+0x00000D81
           ntdll!LdrpAllocateDataTableEntry+0x00000039
           ntdll!LdrpMapDll+0x000002A4
           ntdll!LdrpLoadImportModule+0x0000010D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpInitializeProcess+0x000009DC
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007
				
ログに各プロセスのヒープのダンプが含まれます。この例では、ログはアドレス 270000 のヒープから始まります。いくつかのグローバル カウンターの後ヒープにはダンプが降順のスタック トレースで、ログが含まれていますほとんどの割り当ての原因です。ダイナミクスと比較すると異なる時点で使用されているメモリで発生を推定することができます、プロセスとヒープの使用状況がリークに似ているかどうか。

UMDH の使用時に発生することができます問題

UMDH を使用すると、最も一般的なエラーが発生するため履歴トレースが有効になっていません。また、UMDH を Ntdll.dll に不適切な記号を防ぐ実行しています。他のシンボル ファイルを UMDH を実行するが、スタックにはログ ファイルが含まれています関数名ではありませんが代わりに相対アドレスをトレースモジュールの内部。離れた場所にある 3 番目のエラーは、誤った PID を指定します。次含まれていないプロセスに対して UMDH を実行しようとするとエラー メッセージが表示します。スタック トレースを有効にします。
C:\>umdh p: 1140 UMDH: 現地2000 年 06 月 28 日 12:43 - マシン MyMachine - PID = 1140年接続 =.モジュール完全な列挙体です。SymGetSymFromName (プロセス、ntdll!なる、xxx) 失敗、LastError 126 = UmdhGetAddrFromName は、スタック トレース データベースを見つけることができませんでしたポインター (ntdll!なる)。ntdll.dll のシンボルが不正です。私たち非インポート シンボルを参照してくださいすることがする必要があります。
次のコマンドを使用します。調べようとしているプロセスの設定を再確認してください。
gflags i APPNAME
システム全体のスタックを使用すると、次のコマンドを使用してください。トレース:
gflags-r
これらのコマンドは、アプリケーションに設定されたフラグの一覧を表示します。システム全体のスタック トレースの場合は、機能として表示されます可能性がありますに注意してください。gflags-r + ustコマンドの実行後コンピューターを再起動していない場合は、アクティブ、それ実際にアクティベートされていません。知りたい場合は、各スタック トレースを有効にするアプリケーション、USTEnabled キーを調べますを表示することができます。次のレジストリ キーの下。
NT\CurrentVersion\Image ファイル実行オプション
スタック トレースを有効にしたプロセスで UMDH を実行する場合は、[フラグの設定後、アプリケーションを再起動していないが表示されます可能性があります。次のメッセージがログに記録します。
スタック トレースをしました。この割り当てには保存されません (インデックス = = 0)
実行する場合設定しないで、正しいシンボル パス、またはシンボルが正しくないし、UMDH を実行できます。ログにエラー メッセージを表示します。しかし、だけ間違った表示可能性がありますかコール スタックは誤解。正しいシンボルであることを確認するのには、開始のたとえば、プロセスの NTSD システム デバッガー。
ntsd のメモ帳
次に、デバッガー コンソールから、 LDコマンドは、モジュールのシンボル情報を読み込むし、シンボルを読み込んだモジュールの種類を一覧表示するのには、 LMコマンドを実行します。場合は、LMコマンドの出力をエクスポート シンボルが読み込まれているが表示されます、そのシンボルは正しくありません。場合PDB シンボルが読み込まれて、正しいシンボルです。表示されます可能性があります、誤った PID を指定した場合は、次のエラー メッセージします。
C:\>umdh -p: 1000 UMDH: 現地 2000 年 06 月 28 日 09:45 - マシン MyMachine-=PID = の 1000年を接続しています.失敗しました OpenProcess は LastError 0x57 =

Visual Basic からの UMDH の呼び出し

それは時間の経過と共にログ数をダンプするのに役立ちますリークは非常に大きな可能性があるため、最初。たとえば場合は、Active Server Pages (ASP) Web アプリケーションがメモリをリークするいると思われる、シェルを Visual Basic での COM コンポーネントを記述する役に立つ可能性があります。UMDH。コンポーネントを ASP ページから呼び出すことができます。

をUMDH を起動し、ログ ファイルを作成する Visual Basic のコードの次のです。現在の時間に基づいています。
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
      Public Function GetProcessID()
      GetProcessID = GetCurrentProcessId()
      End Function  
   .
   .
   .
      Dim strTime As String

      Dim sProcID As String
      sProcID = GetProcessID()
      strTime = "MYLOG_" & Format(Now(), "hhmm")
     
      Shell ("C:\UMDH\umdh -p:" & sProcID & " -f:d:\logs\" & strTime & ".txt")
				

UMDH の使用で Windows NT 4.0 サービス パック 6a (SP6a)

UMDH ユーティリティ用のデバッグ ツールが含まれています。Windows 製品に Windows NT 4.0 が動作しません。自己解凍型の実行可能ファイル(Umdhnt4tools.exe)、この資料に含まれているし、以下が含まれていますNT 4.0 で使用されるツール。
  • Umdh_nt4.exe との Dbghelp.dll
    これは Windows NT です。4.0 UMDH ユーティリティの SP6 バージョンです。
  • Dhcmp.exe
    このユーティリティは、2 つの UMDH の比較に使用されます。可能なメモリの場所を確認するのには、[ダンプ発生のリークが発生します。
を次のファイルを入手するには、マイクロソフト ・ ダウンロードからです。Center:
元に戻す画像を拡大する
ダウンロード
Umdhnt4tools.exe を今すぐダウンロードします。
リリース日: 2002 年 8 月 28 日

マイクロソフトのサポート ファイルをダウンロードする方法の詳細については、次の資料番号をクリックして、Microsoft Knowledge Base 内にある資料を参照してください。
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトでは、この配布ファイルのウイルス チェックを行いました。マイクロソフトは、アップロード時点の最新のウイルス検査プログラムを使用しました。配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。 Umdh_nt4.exe との Dbghelp.dll をフォルダーに配置し、まず、PATH 環境変数に分けてください。Umdh_nt4.exe の代わりに使用します。UMDH。

Windows NT 4.0 を実行しているコンピューターで、使用する必要があります。システム全体のスタック トレースを設定するのには Gflags.exe。例を示します。
gflags-r
コンピューターを再起動するかどうかを確認します。Umdh_nt4 スタック トレースプロセスごとに Windows NT 4.0 では機能しません。それを設定されています。全体のシステムです。

ない UMDH_NT4 とは異なり UMDH です。ログ ファイルを比較します。たとえば、次の操作を行うことはできません。
UMDH_NT4 dh1.log dh2.log > cmp12.txt
その代わりが含まれている、Dhcmp.exe ユーティリティを使用する必要があります。この記事では。コマンドは次のようになります。
DHCMP dh1.log dh2.log > cmp12.txt

プロパティ

文書番号: 268343 - 最終更新日: 2013年4月21日 - リビジョン: 5.0
この資料は以下の製品について記述したものです。
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
キーワード:?
kbdownload kbarttypeshowme kbfile kbgraphxlinkcritical kbhowto kbsample kbmt KB268343 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:268343
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com