2017-08-16 2 views
0

J'essaie de profiler un programme en mode mixte avec instrumentation.Erreur VSP1011: Impossible d'obtenir des informations de débogage. Lien avec le commutateur de liens/profil

Pour l'un des dll que je reçois:

Error VSP1011: Unable to obtain debug information. Link with the /Profile linker switch. 
PRF0002: Instrumentation failed with these options: /u "C:\Utc\bin\x64\Release\oqpers.dll" /excludesmallfuncs. Please check the output window for additional details. 

Quand je regarde sous Linker/Advanced pour le projet, je ne vois:

Oui (/ PROFIL)

D'autres idées?

+0

Quelle chaîne d'outils en fait? – user0042

+0

J'utilise Visual Studio 2017, mais nous compilons avec le toolchain 2013. – Derek

+0

Pour ce projet, platform toolset = "Visual Studio 2013 (v120)" – Derek

Répondre

0

Je trouve ce lien:

https://developercommunity.visualstudio.com/content/problem/80750/analyze-c-performance-prf0002-instrumentation-fail.html

Cette réponse semble bon.

Voici la réponse ci-dessous:

je devais utiliser le studio visuel 64 bits version 2013 de vsinstr.exe

En premier lieu, cela est un bug dans la version VS2017 de VSInstr.exe. Le problème est qu'il ne peut pas instrumenter les binaires construits avec le jeu d'outils VS2013. Si je me souviens bien, il y avait un changement qui s'est produit dans les composants du lecteur PDB qui font que le lecteur plus récent ne lit pas les PDB produits par des outils plus anciens. Dans ce scénario, l'ancien jeu d'outils est utilisé pour produire le binaire et le PDB, mais le plus récent, VSInstr.exe, est utilisé pour tenter l'instrumentation. Le plus récent VSInstr utilise le nouveau lecteur PDB et il ne parvient pas à lire la PDB produite par les anciens outils. Il n'y a rien que vous puissiez faire de votre côté pour résoudre ce problème, mais je peux suggérer une solution de contournement. Pour contourner ce problème, vous pouvez revenir à l'utilisation de l'ancien VSInstr.exe à partir de la ligne de commande. L'ancien VSInstr.exe peut lire la PDB produite par l'ancien jeu d'outils et l'instrumentation est réussie. J'ai essayé ceci sur mon système et cela fonctionne pour moi. Voici les 6 étapes à essayer:

Ouvrez une invite de commande du développeur VS2013 en tant qu'administrateur. (Toutes les opérations suivantes se produisent dans cette invite admin cmd.) Instrument l'application cible. Dans ce cas, j'ai navigué vers le dossier InstrumentationDemoApp \ Release, puis j'ai tapé "vsinstr terrain.exe/excludesmallfuncs". L'instrumentation devrait indiquer le succès. Démarrez le moniteur du profileur avec la commande suivante: "vsperfcmd/start: trace /out:test.vsp". Cela lancera le moniteur d'arrière-plan qui recueillera les informations de trace telles qu'elles sont émises par les processus instrumentés. Exécutez l'application cible. Dans ce cas j'ai couru le terrain.exe. Arrêtez le moniteur du profileur avec la commande suivante: "vsperfcmd/shutdown". Cette commande provoque l'arrêt du moniteur de profileur d'arrière-plan et l'écriture du fichier "test.vsp". Ouvrez le fichier "test.vsp" résultant dans Visual Studio 2017. Même si le fichier VSP a été créé avec le moniteur de VS2013 avec les données d'une application qui a été instrumentée avec le VSInstr.exe de VS2013, le lecteur VS2017 doit pouvoir lisez le fichier très bien et affichez le rapport de profilage. Une solution de contournement encore plus simple consiste à remplacer l'ensemble d'outils par VS2015 ou VS2017. Dans ce cas, les outils produisent les binaires et les PDB que la version VS2017 de VSInstr.exe peut instrumenter. Dans votre exemple de projet, après avoir modifié le jeu d'outils, tout fonctionne depuis l'IDE pour effectuer le profilage d'instrumentation. Bien sûr, je crois que vous connaissez déjà cette solution de contournement, mais la difficulté avec celle-ci est que le nouveau jeu d'outils ne peut pas générer proprement le projet et que le binaire résultant utilise un CRT différent. le compilateur et CRT ou d'autres bibliothèques d'outils connexes.Pour que le profilage fonctionne, il ne vaut peut-être pas la peine de travailler pour que le nouveau jeu d'outils se construise correctement et que les bibliothèques les plus récentes prennent du risque.

Veuillez me faire savoir si cette solution de contournement fonctionne pour toi. Si vous ne pouvez pas, je serai heureux de creuser plus loin. À l'heure actuelle, nous ne prévoyons pas de faire fonctionner le VS2017 VSInstr.exe pour les applications instrumentales construites avec le jeu d'outils VS2013. Cependant, nous garderons cela à l'esprit à l'avenir. Si nous apportons des améliorations à VSInstr.exe c'est l'une des améliorations que nous allons considérer. Merci d'avoir aidé à améliorer Visual Studio.

Allen Denver

Visual Studio

LDRS Allen Denver [MSFT] · 22 juillet à 05h37 Salut Allen,

J'ai essayé la solution proposée et ont fait une correction mineure étape 3, car il voulait OUTPUT au lieu de OUT: vsperfcmd/start: trace /output:test.vsp

Après cela, je suis en mesure d'ouvrir le vsp résultant dans une nouvelle version VS, de sorte que la workaroud fonctionne.

Merci beaucoup pour l'enquête et la solution de contournement!