3

MiniDumpWriteDump を使用して、クラッシュ時にダンプ ファイルを生成しています。私は完全なメモリダンプを実行しようとしています。これは機能しているようで、予想どおり大きなファイルが生成されます。

ただし、この巨大なファイルを Visual Studio (2005) にロードすると、ヒープ上の変数の値を確認できないようです。実際、通常のダンプよりも多くの情報は得られません...

MiniDumpWriteDump への呼び出しは次のとおりです。

MINIDUMP_EXCEPTION_INFORMATION mdi;

mdi.ThreadId = GetCurrentThreadId();
mdi.ExceptionPointers = in_pInfo;
mdi.ClientPointers = FALSE;

MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),
    fHan,
    MiniDumpWithFullMemory,
    &mdi,
    0,
    0);

注: 私は有効なスタックである pdb の完全なセットを持っており、私のテスト アプリケーションではゼロ除算でエラーを偽装しています。

これはなぜですか?

乾杯リッチ

4

1 に答える 1

2

おそらく、正しい .pdb ファイルがないためです。または、コードがオプティマイザーのバージョンの RSA 暗号化にかけられているためです。または、ポインターがレジスターで渡される x64 ビルドがあるためです。または、ヒープの破損によりコードがクラッシュし、デバッグ情報が同様に信頼できなくなったためです。または、クラッシュするスレッドのスタックが吹き飛ばされ、追跡するパンくずが残りません。

好きなのを選びな。

于 2010-02-19T12:52:07.290 に答える