用xperf获取符号

我通过文档阅读,并使用了概述的命令,但由于某种原因,我似乎没有得到任何符号,只是一系列的“未知”的总结表的function列中的一切,除了最高层的应用程序,我试图debugging….我设置环境variables的微软服务器和直接包含pdb的应用程序。 在启动汇总表之前,我也一定要select“加载符号”项目。

根据我正在阅读的信息,Tabl在加载符号时需要一些时间才能显示,但对于我来说,表格几乎是即时显示的,只有sprite.exe-> sprite.exe中最上面的项目有函数名称,其他function的行是空白或“未知”

即时通讯使用Vista SP1。

这是我使用的batch file。 我做了什么可以防止sybols被加载吗?

REM start profiler xperf -on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE^ -stackwalk profile -minbuffers 16 -maxbuffers 1024 -flushtimer 0^ -f tmp.etl REM run the app we want to profile sprite.exe REM stop xperf -d profile.etl REM set symbol path set _NT_SYMBOL_PATH = ^ C:\Projects\C++\fl lib\bin;^ REM dlls C:\Projects\C++\fl lib\samples\bin;^ REM main exe SRV*c:\symbols*http://msdl.microsoft.com/download/symbols REM display profile xperf profile.etl 

Solutions Collecting From Web of "用xperf获取符号"

它使用的是什么版本的dbghelp.dll ? 在使用%SystemRoot%\system32安装的dbghelp.dll的版本时, dbghelp.dll使用kernrate和其他实用程序工作的PDB符号时遇到问题。

您可能需要将dbghelp.dllsymsrv.dll从最新版本的Windows调试工具复制到XPerf可以找到它的目录中。

此外,您需要删除“=”之前的空格,否则您将定义“ _NT_SYMBOL_PATH ”变量(包括名称中的尾部空格)。

在行尾加上注释也不行。 一个连续的字符如'^'通常需要是行上的最后一个字符。 当我运行这个语句(在XP上),我结束了“ _NT_SYMBOL_PATH ”等于“ C:\Projects\C++\fl lib\bin; REM dlls ”和关于下一行的错误。

尝试设置

 TRACE_FORMAT_SEARCH_PATH 

环境变量。 如果这不起作用,则可能必须使用TracePdb.exe从PDB手动提取TMF文件(或者至少使用常规路径而不是SYM *路径)。 这是使用ETL跟踪/ XPerf最烦人的部分