8

首先,这不是关于如何进行堆分析的一般问题,因为我在早期版本的 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 应用程序进行堆分析取得任何成功,如果是,如何?

4

1 回答 1

1

您是否尝试过EGGHUNTER工具?还有一个Intel Parallel Studio XE 2013 试用版,它有很多工具可以使用。它连接到您的 IDE VS 2010 或 2012,然后您可以测试运行您的应用程序。一般功能

英特尔® Parallel Studio XE 包括下一代软件

开发工具:  英特尔® C、C++ 和 Fortran 编译器 –</p>

行业领先的编译器 英特尔® MKL 和英特尔® IPP – 性能库 英特尔® 线程构建模块和英特尔® Cilk™ Plus – 并行编程模型 英特尔® Advisor XE – 线程助手 英特尔® VTune™ Amplifier XE – 性能和线程分析器  英特尔® Inspector XE – 内存和线程检查器  静态分析 – 查找难以发现的缺陷

我想它会帮助你。谢谢

于 2013-02-19T06:11:33.027 回答