首先,这不是关于如何进行堆分析的一般性问题,因为我对早期版本的Windows非常熟悉。
我想知道的是,如果有人设法对64位Windows 8上运行WOW64层的32位应用程序执行堆分析,Windows 8是关键词吗?
运行适用于Windows的Windows 7和调试工具我只是使用gflags应用用户堆栈和堆标记,然后使用x86版本的WinDbg附加到进程,只获得32位上下文(就像我' m通常对WOW64层本身不感兴趣)。堆信息显示完美。
在Windows 8上,执行相同的步骤,添加gflags并启动我的进程,启动后的内存使用量从40增加到140MB,表明gflags已经启动。
但是,无论我如何尝试,WinDbg或umdh都无法获取任何堆信息。通过运行x64版本并将.effmach切换到32位上下文时,使用x86版本的旧方法或文档中描述的方式都不是通过WOW64运行。
此外,我已经尝试使用适用于Windows的Windows 7和Windows 8版本的调试工具,因此在Windows 7上提供良好结果的相同工具在Windows 8上的行为不同。
我目前的猜测是,Windows 8管理堆的方式(我已经看过几篇关于互联网的文章)的变化可能还没有完全更新/反映在Windows的调试工具中。我假设(我自己的使用场景只涉及WOW64上下文中的32位进程,所以我不确定)对于没有WOW64层的应用程序的堆分析按预期工作,但WOW64当前是阻塞程序这里。
我很想知道我做错了什么,或者当前工具是否存在问题。我目前已经退回到在VM中运行Windows 7来进行内存分析。
那么,在Windows 8中WOW64下对win32应用程序进行堆分析是否有任何成功,如果是这样的话?
答案 0 :(得分:1)
您是否尝试过EGGHUNTER工具?还有一个Intel Parallel Studio XE 2013 trial Version,它有很多可以使用的工具。它连接到你的IDE VS 2010或2012,然后你可以测试运行你的应用程序。一般功能
英特尔®ParallelStudio XE包含下一代软件
开发工具:Intel®C,C ++和Fortran编译器 -
业界领先的编译器英特尔®MKL和英特尔®IPP - 性能 库•英特尔®线程构建模块和英特尔®Cilk™Plus - 并行编程模型Intel®AdvisorXE - 线程助手 英特尔®VTune™放大器XE - 性能& ThreadProfilerIntel® Inspector XE - 内存和线程检查器静态分析 - 定位 很难找到缺陷
我想它会对你有所帮助。谢谢