首先,这不是关于如何进行堆分析的一般问题,因为我在早期版本的 Windows 中对此非常熟悉。
然而,我想知道的是,是否有人设法对通过 64 位 Windows 8 上的 WOW64 层运行的 32 位应用程序执行堆分析,Windows 8 是这里的关键词?
运行 Windows 7 和 Windows 调试工具对 WOW64 层本身感兴趣)。堆信息完美显示。
在 Windows 8 上,执行相同的过程,添加 gflags 并启动我的进程,启动后的内存使用量从 40 增加到 140MB,表明 gflags 已启动。
但是,无论我如何尝试,WinDbg 或 umdh 都无法获取任何堆信息。既不是使用 x86 版本的旧方式,也不是文档中描述的方式,通过 WOW64 运行时,通过运行 x64 版本并将 .effmach 切换到 32 位上下文。
此外,我已经使用 Windows 7 和 Windows 8 版本的 Windows 调试工具进行了尝试,因此在 Windows 7 上为我提供良好结果的相同工具在 Windows 8 上的行为不同。
我目前的猜测是,Windows 8 管理堆的方式的变化(我在互联网上看到了几篇文章)可能还没有完全更新/反映在 Windows 调试工具中。我会假设(我自己的使用场景仅涉及 WOW64 上下文中的 32 位进程,所以我不确定)当没有 WOW64 层按预期工作时,应用程序的堆分析工作,但 WOW64 当前是阻止程序这里。
我很想知道我是否做错了什么,或者当前的工具是否存在问题。我目前已经退回到在 VM 中运行 Windows 7 来进行内存分析。
那么,有没有人在 Windows 8 中对 WOW64 下的 win32 应用程序进行堆分析取得任何成功,如果是,如何?