3

私は以前に UMDH を何十回も使用しましたが、問題はありませんでした。

突然、ダンプ ファイルのスタック トレースに関数名が表示されなくなりました。一連のアドレスだけです。

私はustを有効にしました:

gflags exe_name +ust

exe_name を起動してから実行します

umdh -p:pid one.txt umdh -p:pid two.txt

one.txt と two.txt を確認しましたが、これらがどこから来ているのかわかりません。私が差分を行うとき

umdh one.txt two.txt > diff.txt

結果は役に立ちません。

助けて、私はこのツールが大好きです。

4

3 に答える 3

2

UMDH スイッチの構文は、debugging-tools-for-windows の最後のリリースのどこかでわずかに変更されました。おそらくそれが問題です。以下を試してください -

umdh -p:pid **-f:**one.txt

umdh -p:pid **-f:**two.txt

umdh -v -l one.txt two.txt > diff.txt

(-l は新しいスイッチで、PDB からファイル番号と行番号を抽出します)。_NT_SYMBOL_PATH繰り返しますが、環境変数にPDBへのパスが含まれていることを確認してください。

ドキュメントもオンラインで入手できるようになりました。

(編集:) 比較の重要なスイッチ -v が存在するようになりました...

(編集:)動作環境を指定していません。VC8 では、CRT の malloc が FPO でコンパイルされていることは よく知られていますが、これは UMDH では克服できません。また、UMDH が特定のアロケータ タイプ (SysAllocString など) を処理できないことも知られています (Pavel Lebedinsky のコメントを参照)。実際にいくつかのエキゾチックなアロケーターを使用している場合は、LeakDiagを試してみてください。それは、より多くのアロケーターを処理します。

于 2009-04-26T12:17:17.433 に答える
0

実行可能なアドレスと関数名の間のマッピングは、PDB で定義されます。


特にコードをコンパイルしたマシンとは別のマシンで UMDH を実行している場合は、シンボル パスが正しく設定されていることを確認してください。

于 2009-02-05T23:23:37.590 に答える