我通读了文档,并使用了概述的命令,但由于某种原因,我似乎没有得到任何符号,只是在汇总表的function列中的一系列“未知”,除了我试图调试的应用程序的最上面的一组之外。我将环境变量设置为microsoft服务器和包含应用程序的pdb的目录。在调出汇总表之前,我还确保选择了"Load Symbols“项。
根据我正在阅读的信息,在加载符号时,应该需要一段时间才能让表显示出来,但是对我来说,表几乎是立即显示的,只有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发布于 2009-02-28 00:44:22
它使用的是什么版本的dbghelp.dll?在使用安装在%SystemRoot%\system32中的dbghelp.dll版本时,我在使用kernrate和其他实用程序时获取PDB符号时遇到了问题。
您可能需要将dbghelp.dll和symsrv.dll从最新版本的调试工具复制到XPerf可以找到它的目录中。
此外,您需要删除'=‘前的空格,否则您将定义“_NT_SYMBOL_PATH”变量(包括名称中的尾随空格)。
在行尾包含注释也是行不通的。诸如“^”之类的行续行符通常需要是该行的最后一个字符。当我(在XP上)运行该语句时,我得到的结果是“_NT_SYMBOL_PATHC:\Projects\C++\fl lib\bin; REM dlls”等于“C:\Projects\C++\fl lib\bin; REM dlls”,并且关于下一行的信息是错误的。
发布于 2009-02-28 02:19:58
尝试设置
TRACE_FORMAT_SEARCH_PATH环境变量。如果这不起作用,您可能必须使用TracePdb.exe从PDB中手动提取TMF文件(或者至少使用常规路径而不是SYM*路径)。这是迄今为止使用ETL traces / XPerf时最烦人的部分。
https://stackoverflow.com/questions/597211
复制相似问题