1

我通读了文档并使用了概述的命令,但是由于某种原因,我似乎没有得到任何符号,只是汇总表的函数列中的一系列“未知数”,除了我正在尝试的应用程序的最顶层集调试....我将环境变量设置为 microsoft 服务器和包含应用程序 pdb 的目录。我还确保在调出汇总表之前选择“加载符号”项。

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

我正在使用 Vista SP1。

这是我使用的批处理文件。我做了什么会阻止符号被加载的事情吗?

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
4

2 回答 2

2

它使用的是什么版本dbghelp.dll?在kernrate使用dbghelp.dll安装在%SystemRoot%\system32.

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

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

在行尾包含注释也不行。诸如“^”之类的行继续字符通常需要是该行的最后一个字符。当我(在 XP 上)运行该语句时,我最终得到“ _NT_SYMBOL_PATH ”等于“   C:\Projects\C++\fl lib\bin; REM dlls”以及关于下一行的错误。

于 2009-02-28T00:44:21.960 回答
1

尝试设置

TRACE_FORMAT_SEARCH_PATH

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

于 2009-02-28T02:19:57.627 回答