Question

J'ai lu la documentation et utilisé les commandes décrites mais pour une raison quelconque, je ne semble être obtenir des symboles, juste une série de « inconnues » dans la colonne de fonction du tableau récapitulatif pour tout sauf le plus élevé ensemble de l'application Je suis en train de debug .... Je mets la variable enviromental au serveur Microsoft et les direcories containg les années pdb pour l'application. J'ai aussi fait en sorte de sélectionner l'élément « Symboles Charger » avant de mettre le tableau récapitulatif.

Arcording à l'information que je lisais devrait prendre un certain temps pour la tabl pour afficher pendant qu'il charge les symboles, mais pour moi, le tableau affiché presque instantanément et seulement les plus haut articles dans sprite.exe-> sprite.exe HAD les noms de fonctions, les lignes othe pour la fonction étaient vides ou « inconnu »

Im en utilisant Vista SP1.

Ceci est le fichier batch je. Est-ce que je fais tout ce qui empêcherait les sybols chargés?

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
Était-ce utile?

La solution

Quelle version de dbghelp.dll est-il utilise? J'ai eu du mal à obtenir des symboles PDB travaillant avec kernrate et d'autres services publics lorsque vous utilisez la version de dbghelp.dll qui est installé dans %SystemRoot%\system32.

Vous devrez peut-être copier et dbghelp.dll symsrv.dll à partir d'une version récente de Debugging Tools pour Windows dans un répertoire où XPerf peut trouver.

, vous devez également supprimer l'espace avant le « = », ou bien vous définissez la variable « _NT_SYMBOL_PATH » (y compris l'espace de fuite dans le nom).

commentaires y compris à la fin d'une ligne ne va pas travailler non plus. Un caractère de continuation de ligne telle que « ^ » doit généralement être le dernier caractère de la ligne. Quand je courais cette déclaration (sur XP), je me suis retrouvé avec « _NT_SYMBOL_PATH » égal à « C:\Projects\C++\fl lib\bin; REM dlls » et une erreur de la ligne suivante.

Autres conseils

Définissez la

TRACE_FORMAT_SEARCH_PATH

variable d'environnement. Si cela ne fonctionne pas, vous pouvez avoir à extraire manuellement les fichiers TMF de vos PDB en utilisant TracePdb.exe (ou au moins utiliser un chemin régulier au lieu d'un chemin de SYM *). Ceci est de loin la partie la plus ennuyeux d'utiliser des traces de processus ETL / XPerf

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top