Question

Je tente d'utiliser XPerf au profil ma DLL, mais il refuse d'utiliser le fichier PDB de mon DLL. Courir XPerf sur le .etl avec -Symboles, je reçois:

DBGHELP: mydll- private symbols & lines
         C:\mydll\debugu\mydll.pdb - unmatched

Ce qui me porte à croire qu'il pense que mon PDB ne correspond pas à la DLL l'application utilise. C'est faux; il ne correspond. J'ai confirmé le chemin de la DLL l'application est un lien avec l'utilisation procexp, reconstruit complètement le projet, et ainsi de suite. Il pense encore qu'il ne correspond pas.

Toutes les idées sur ce qui pourrait être mal?

Était-ce utile?

La solution 2

Désolé, je posais cette question et oublié.

Il y avait en fait deux problèmes.

La première est que XPerf utilisait en fait une ancienne version en cache de mes symboles. Cela a été corrigé en le supprimant du cache de symbole.

La seconde est que lorsque je chargé des symboles dans xperfview, il n'a pas vraiment mis ma mise à jour pdb dans le cache des symboles. Le pdb était dans un répertoire que j'ai confirmé a été inclus dans la variable _NT_SYMBOL_PATH, cependant. Malheureusement, je ne me rappelle pas la commande exacte utilisée pour résoudre ce problème, mais je crois qu'il était un « XPerf file.etl -Symboles » variante. Cette commande analysé correctement le etl et chargé / en cache tous les symboles pertinents qu'il les a rencontrés. Après cela, xperfview pourrait bien montrer mes symboles.

Notez que je devais exécuter à nouveau la commande en tout temps mon pdb a changé, parce que xperfview ne serait toujours rien toucher qui n'a pas été déjà dans le cache de symbole. Je ne suis toujours pas sûr pourquoi il se comporte de cette façon sur ma machine, d'autres personnes ne semblent pas avoir ce problème.

Autres conseils

Essayez la fixation d'un _NT_SYMBOL_PATH d'environnement système variable pour pointer vers votre fichier pdb _NT_SYMCACHE_PATH à un point à c: \ Symbols. Voir la documentation sur la manipulation des symboles XPerf http: // msdn .microsoft.com / fr-fr / bibliothèque / ff191023 (VS.85) .aspx

Il y a aussi un bon article de blog intitulé « Sous les couvertures avec XPerf » sur WindowsItPro dot com qui couvre la remise de symbole dans XPerf.

Notez que je avais besoin de définir une variable d'environnement système avec les valeurs correctes, réglage de l'environnement dans un fichier de commandes n'a pas été repris par xperfview (cocher Trace, Configurer Symbole option de menu Chemin immédiatement après le démarrage XPerfView)

Je viens affiché réponse à une question similaire sur le SO qui pourrait être lié au problème vécu ici ...

En fait, si la DLL est chargée dynamiquement, il peut causer des problèmes pour XPerf en ce qui concerne le chargement des symboles.

Personnellement, je suis devinettes il est sur la logique au sein XPerf décider si même essayer pour charger des symboles pour un module donné. par exemple. « Charger toutes les entrées de EXE et leurs IAT » (qui sauterait DLL toute dynamique - qui ne semble pas être le cas, mais quelque chose de similaire se passe)

EDIT:

J'ai récemment discuté avec un collègue, et a appris que XPerf sera bien « décider » aux symboles de charge pour les DLL chargées ... programme IF la DLL reste chargé jusqu'à la fin du processus.

Donc, pour les DLL qui sont chargés et Unloaded lors de l'exécution, et sont déchargés à la fin ... XPerf sautera la tentative de charger ces symboles.

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