2009-02-28 64 views
1

我通讀文檔並使用了概述的命令,但出於某種原因,我似乎沒有得到任何符號,只是在彙總表的函數列中有一系列「未知」,除了我嘗試調試的應用程序的最上面的一組....我設置環境變量的微軟服務器和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 

回答

2

它使用什麼版本的dbghelp.dll?在使用安裝在%SystemRoot%\system32中的dbghelp.dll版本時,我遇到了使用kernrate和其他實用程序的PDB符號時遇到問題。

您可能需要將dbghelp.dllsymsrv.dll從最新版本的Windows調試工具複製到XPerf可以找到它的目錄。另外,您需要刪除'='之前的空格,否則您將定義「_NT_SYMBOL_PATH  」變量(包括名稱中的尾部空格)。

在行尾添加註釋也不起作用。一行連續字符,如'^'通常需要是行上的最後一個字符。當我運行該語句(在XP上)時,我以「_NT_SYMBOL_PATH  」結束,等於「    C:\Projects\C++\fl lib\bin; REM dlls」並出現關於下一行的錯誤。

+0

我剛在這裏添加了張貼的評論。然而,去除=周圍的空間似乎已經修復了它。奇怪的,因爲var被設置,因爲我檢查了它...一定是變量值的領先空間,xperf不喜歡,並沒有解析值的其餘部分... – 2009-02-28 10:56:01

1

嘗試設置

TRACE_FORMAT_SEARCH_PATH 

環境變量。如果這不起作用,則可能需要使用TracePdb.exe從PDB手動提取TMF文件(或者至少使用常規路徑而不是SYM *路徑)。這是迄今爲止使用ETL痕跡/ XPerf中最煩人的部分。