Comment modifier les emplacements des fichiers sources dans un fichier de symboles (pdb)

StackOverflow https://stackoverflow.com/questions/27952

  •  09-06-2019
  •  | 
  •  

Question

En gros, ce que je veux faire, c'est :un fichier pdb contient un emplacement de fichiers source (par ex. C:\dev\proj1\helloworld.cs).Est-il possible de modifier ce fichier PDB afin qu'il contienne un emplacement différent (par ex. \more\differenter\location\proj1\helloworld.cs)?

Était-ce utile?

La solution

Vous pouvez utiliser la fonctionnalité d'indexation des sources des outils de débogage pour Windows, qui enregistrera les références aux révisions appropriées des fichiers dans votre référentiel source en tant que flux alternatif dans le fichier PDB.

Autres conseils

Si vous souhaitez être plus générique sur les chemins intégrés dans un fichier PDB, vous pouvez d'abord utiliser MS-DOS subst commande pour mapper un dossier particulier à une lettre de lecteur.

subst N: <MyRealPath>

Ouvrez ensuite votre projet par rapport au N :conduisez-le et reconstruisez-le.Vos fichiers PDB référenceront les fichiers sources sur N :.Désormais, peu importe où vous placez cet ensemble particulier de fichiers sources, à condition que vous appeliez ensuite le répertoire racine "N:" comme vous l'avez fait lors de sa construction.

Cette pratique est recommandée par John Robbins dans son excellent livre, Applications de débogage pour Microsoft .NET et Microsoft Windows.

Je voulais trouver la réponse à cela afin de déboguer un vidage sur incident survenu dans un exécutable que je n'avais pas construit sur ma machine, donc le chemin vers le code source référencé dans le PDB n'était pas valide, tout comme le chemin vers le PDB. référencé dans l'exécutable.

Après avoir cherché et échoué à trouver quelque chose qui fonctionne, j'ai découvert que si vous placez l'exécutable et le PDB à côté du fichier de vidage sur incident (c'est-à-diredans le même répertoire), puis ouvrez et exécutez le vidage sur incident dans VS, VS trouvera et utilisera le PDB/EXE localement.De plus, il vous demandera également l'emplacement du code source lorsque vous cliquerez sur une entrée dans la pile d'appels :en le pointant vers le code source pertinent, tout fonctionne bien, ce qui est génial !

Quoi qu'il en soit, j'espère que cela aidera quelqu'un d'autre... :)

C’est certainement possible, comme l’a déjà souligné On Freund.Mais si c'est uniquement pour que les sources puissent être localisées et chargées pendant le débogage, alors une meilleure façon serait de définir le chemin source en conséquence.Une fois défini dans un débogueur, il prévisualisera tous les chemins codés en dur dans les PDB.

Dans Windbg (par exemple):

.srcpath+ chemin_vers_racine_source
ou ceci (au cas où vous débogueriez à distance) :
.lsrcpath+ chemin_vers_racine_source

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