使用xperf获取符号
我通读文档并使用了概述的命令,但出于某种原因,我似乎没有得到任何符号,只是在汇总表的函数列中有一系列“未知”,除了我尝试调试的应用程序的最上面的一组....我设置环境变量的微软服务器和direcories pdb的包含应用程序。在启动汇总表之前,我还确保选择“加载符号”项目。使用xperf获取符号
根据我正在阅读的信息,应该需要一些时间让tabl在加载符号时显示,但对于我来说,表格几乎是即时显示的,只有sprite.exe-> sprite.exe中最上面的项目有功能名称,其他功能行是空白或“未知”
即时通讯使用Vista SP1。
这是我使用的批处理文件。我做了什么可以防止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
它使用什么版本的dbghelp.dll
?在使用安装在%SystemRoot%\system32
中的dbghelp.dll
版本时,我遇到了使用kernrate
和其他实用程序的PDB符号时遇到问题。
您可能需要将dbghelp.dll
和symsrv.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中最烦人的部分。
我刚在这里添加了张贴的评论。然而,去除=周围的空间似乎已经修复了它。奇怪的,因为var被设置,因为我检查了它...一定是变量值的领先空间,xperf不喜欢,并没有解析值的其余部分... – 2009-02-28 10:56:01