2017-07-17 29 views
1

メモリリーク(notherコンピュータ上)のために、私たちのソフトウェアのクラッシュからダンプファイル(.mdmpおよび.hdmp)を受信しました。 ソフトウェアは1つのexeファイルと多数の.dllファイルで構成されています。 私はソースコード(部分C++、部分デルファイ)を持っていますが、その正確なビルド用の.pdbファイルはありません。Windowsダンプファイル(hdmp) - pdbファイルなしの情報

ビジュアルスタジオまたはWinDbgでmdmp/hdmpを開くことができます。しかし、私は.pdbファイルを持っていないので、多くの情報を得ることはできません。 hdmpファイルは〜4GBの大きさなので、pdbファイルがなくても既に多くの情報があることを期待しました。 しかし、私はコマンドを使用するときに

!analyze -v 

がより良い結果を得るために、それは何とか可能です例えば、本当に便利なスタックトレースまたは他の情報を得ることはありませんか?どうやら、どのdllが使用するメモリ(または、特定のdllに接続されているプロセス)の量を調べることができますか? 私はソースコードを持っているので、新たに生成されたpdbファイル(C++モジュール用)を使用できますか?彼らは100%正確ではない場合でも。どのモジュールがメモリリークを引き起こしたのかを知るには、すでに大きな助けになるでしょう!

+2

参照[この質問と回答](https://stackoverflow.com/questions/21886338/crash-dump-windbg-forceを助けるかもしれません-pdb-files-to-match-doesnt-work)を実行します。 –

+0

「プロセス」ですか? 1つのダンプは1つのプロセスにのみ適用されます。また、メモリはプロセスごとに割り当てられ、DLLごとには割り当てられません。 –

+0

PDBを構築したとしますが、99%の精度か1%の精度しか得られていません。どのコンパイラのバージョンを使用しましたか、どの環境にソースがありますか?これらのいずれかを変更すると結果が変わる可能性があります。 –

答えて

2

あなたは今、あなたは!sym noisy .Thisが可能になります別のコマンドを実行する必要がありますが

0:000> .symopt 
Symbol options are 0x30237: 
    0x00000001 - SYMOPT_CASE_INSENSITIVE 
    0x00000002 - SYMOPT_UNDNAME 
    0x00000004 - SYMOPT_DEFERRED_LOADS 
    0x00000010 - SYMOPT_LOAD_LINES 
    0x00000020 - SYMOPT_OMAP_FIND_NEAREST 
    0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS 
    0x00010000 - SYMOPT_AUTO_PUBLICS 
    0x00020000 - SYMOPT_NO_IMAGE_SEARCH 

をSYMOPT_LOAD_ANYTHING何かをロードしているコマンド.symopt +40を使用する必要がversion.forの完全一致せず、PDBファイルを読み込むことができます一度これを行う

0:000> !sym noisy 
noisy mode - symbol prompts on 

にうるさいモードでは、uがanalyzeコマンドを実行することができますし、windbgのシンボルを探す場所は、すべてのシンボルのロードメッセージを取得開始します。

我々はsympathを追加した場合でも、時には、いくつかのシンボルは、それはいくつかのフォルダになりますファイルことに注意してくださいあなたはwindbgのが.sympath

0:000> .sympath 
Symbol search path is: srv*c:\symcache*http://msdl.microsoft.com/download/symbols 
Expanded Symbol search path is: srv*c:\symcache*http://msdl.microsoft.com/download/symbols 

を使用して見えるシンボルパスにPDBファイルのパスを追加してくださいその場合、私はwindbgが探しているフォルダにpdbファイルをコピーします。

DBGHELP:NTDLL - パブリックシンボル
C:\ symcache \ wntdll.pdb \ B5ACAC3B4A6C4515AF416D60366399652:\ symcache \ wntdll.pdb \ B5ACAC3B4A6C4515AF416D60366399652 \ wntdll.pdb

私はCにPDBファイルをコピーします。

ネイティブC++メモリリークがleaktrack ダンプせずに分析することが困難であると述べました。

DebugDiag native memory leak analysisを使用してください。ヒープがメモリを占有していることを示す必要があります。カスタムライブラリヒープの場合は、この特定のコンポーネントを試してみてください。以下の記事は、あなた

debugging-native-memory-leaks-with-debug-diag-1-1

walkthrough-troubleshooting-a-native-memory-leak

using-debugdiags-leaktrack-with-procdumps-reflected-process-dumps

関連する問題