我已经从Windows SDK安装了Xperf性能分析器,并按照文档中的说明使用以下命令捕获了跟踪:
xperf -on SysProf -stackwalk profile
然而,堆栈跟踪并不包含任何调用堆栈数据。
我的平台是Vista 64位。在64位Windows上捕获调用堆栈是否需要特殊设置或技巧?
我已经从Windows SDK安装了Xperf性能分析器,并按照文档中的说明使用以下命令捕获了跟踪:
xperf -on SysProf -stackwalk profile
然而,堆栈跟踪并不包含任何调用堆栈数据。
我的平台是Vista 64位。在64位Windows上捕获调用堆栈是否需要特殊设置或技巧?
经过进一步搜索,我找到了一个设置:
设置注册表值DisablePagingExecutive = 1并重新启动(参见Windows性能工具包FAQ)。
虽然听起来很棒,但它似乎对我的系统没有帮助,仍然没有调用堆栈。
与Microsoft支持联系后,他们的回复是对于x64 Vista,您只能捕获x64本机应用程序的调用堆栈,而不能捕获32位程序的调用堆栈。
Windows 7似乎已经删除了这个限制,在Win 7 x64上运行良好,至少这是Valve有关Xperf的演示文稿中说的。