まず、これはヒープ分析の方法に関する一般的な質問ではありません。以前のバージョンの Windows ではよく知っていることです。
しかし、私が疑問に思っているのは、64 ビット Windows 8 で WOW64 レイヤーを介して実行されている 32 ビット アプリケーションのヒープ分析を実行できた人がいるかどうかです。ここでは Windows 8 がキーワードになっています。
Windows 7 と Windows 用のデバッグ ツールを実行しています。単純に gflags を使用してユーザー スタックとヒープのタグ付けを適用し、x86 バージョンの WinDbg を使用してプロセスにアタッチし、32 ビット コンテキストのみを取得しました (通常はそうではありません)。 WOW64レイヤー自体に興味があります)。ヒープ情報は完全に表示されます。
Windows 8 で同じ手順を実行し、gflags を追加してプロセスを開始すると、起動後のメモリ使用量が 40 MB から 140 MB に増加し、gflags が開始されたことを示します。
ただし、WinDbg も umdh もヒープ情報を取得できません。x86 バージョンを使用する古い方法でも、ドキュメントに記載されている方法でも、WOW64 を介して実行する場合は、x64 バージョンを実行して .effmach を 32 ビット コンテキストに切り替えます。
さらに、Windows 用のデバッグ ツールの Windows 7 と Windows 8 の両方のバージョンを使用してこれを試したので、Windows 7 で良い結果が得られた同じツールが Windows 8 では同じように動作しません。
私の現在の推測では、Windows 8 がヒープを管理する方法の変更 (インターネットに関するいくつかの記事を見てきました) は、Windows 用のデバッグ ツールに完全に更新/反映されていない可能性があります。私は(私自身の使用シナリオはWOW64コンテキストで32ビットプロセスのみを含むため、確かなことはわかりません)意図したとおりに動作する間にWOW64レイヤーがない場合のアプリケーションのヒープ分析は機能すると思いますが、WOW64は現在ブロッカーですここ。
何か間違ったことをしていないか、または現在のツールに問題があるかどうかを知りたいと思っています。私は現在、メモリ分析を行うために VM で Windows 7 を実行するようにしています。
では、Windows 8 の WOW64 で win32 アプリケーションのヒープ分析を成功させた人はいますか?