Getting die Symbole mit xperf
Frage
ich durch die docs lesen und dazu verwendet, die jedoch aus irgendeinem Grunde skizzierten Befehle, die ich scheint nicht alle Symbole zu bekommen, nur eine Reihe von „Unbekannten“ in der Funktion Spalte der Übersichtstabelle für alles außer dem obersten Satz der App ich war zu debuggen versuchen .... ich habe die enviromental Variable auf den Microsoft-Server und die direcories der pDB die für die App containg. Ich habe auch sicher, dass das „Load Symbol“ Element auszuwählen, bevor die Übersichtstabelle der Erziehung.
Arcording zum Eintrag Ich lese es soll einige Zeit für die Tabl nehmen anzuzeigen, während es die Symbole lädt, für mich jedoch der Tisch fast augenblicklich angezeigt und nur die obersten Artikel in sprite.exe-> sprite.exe had Funktionsnamen waren die othe Reihen für die Funktion entweder leer oder „unbekannt“
Im mit Vista SP1.
Dies ist die Batch-Datei, die ich verwenden. Habe ich irgendetwas tun, dass die sybols geladen?
verhindernREM 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
Lösung
Welche Version von dbghelp.dll
nutzt es? Ich habe Mühe, PDB Symbole hat die Arbeit mit kernrate
und anderen Dienstprogramme, wenn die Version von dbghelp.dll
verwenden, die in %SystemRoot%\system32
installiert ist.
Sie müssen möglicherweise dbghelp.dll
und symsrv.dll
aus einer aktuellen Version von Debugtools für Windows in ein Verzeichnis kopieren, wo Xperf es finden können.
Außerdem müssen Sie den Raum vor dem ‚=‘ entfernen, sonst sind definieren Sie die „_NT_SYMBOL_PATH
“ Variable (einschließlich des nachgestellten Leerzeichen im Namen).
Einschließlich Kommentare am Ende einer Zeile geht nicht entweder zu arbeiten. Ein Zeilenfortsetzungszeichen wie ‚^‘ muss typischerweise das letzte Zeichen in der Zeile sein. Als ich diese Aussage lief (auf XP), landete ich mit „_NT_SYMBOL_PATH
“ gleich „C:\Projects\C++\fl lib\bin; REM dlls
“ und einem Fehler über die nächste Zeile nach oben.
Andere Tipps
Versuchen Sie, die
TRACE_FORMAT_SEARCH_PATH
Umgebungsvariable. Wenn das nicht funktioniert, können Sie manuell die TMF-Dateien von Ihrem PDBs mit TracePdb.exe (oder zumindest verwenden, um einen gleichmäßigen Bahn anstelle eines SYM * path) entpacken. Dies ist bei weitem das nervigste Teil mit ETL Spuren / Xperf