Domanda

Fondamentalmente quello che voglio fare è questo:un file pdb contiene una posizione dei file sorgente (ad es. C:\dev\proj1\helloworld.cs).È possibile modificare il file pdb in modo che contenga una posizione diversa (ad es. \more\differenter\location\proj1\helloworld.cs)?

È stato utile?

Soluzione

Puoi utilizzare la funzionalità di indicizzazione dell'origine degli strumenti di debug per Windows, che salverà i riferimenti alle revisioni appropriate dei file nel repository di origine come flusso alternativo nel file PDB.

Altri suggerimenti

Se stai cercando di essere più generico riguardo ai percorsi incorporati in un file pdb, puoi prima utilizzare MS-DOS subst comando per mappare una particolare cartella su una lettera di unità.

subst N: <MyRealPath>

Quindi apri il tuo progetto relativo alla N:guidarlo e ricostruirlo.I tuoi file PDB faranno riferimento ai file di origine su N:.Ora non importa dove collochi quel particolare insieme di file sorgente, purché successivamente chiami la directory root "N:" come hai fatto quando l'hai creata.

Questa pratica è raccomandata da John Robbins nel suo eccellente libro, Debug di applicazioni per Microsoft .NET e Microsoft Windows.

Volevo trovare la risposta a questa domanda per eseguire il debug di un crash dump che si è verificato in un eseguibile che non ho creato sulla mia macchina, quindi il percorso del codice sorgente a cui si fa riferimento nel PDB non era valido, così come lo era il percorso del PDB riferimento nell'eseguibile.

Dopo aver cercato in giro senza riuscire a trovare qualcosa che funzionasse, ho scoperto che se inserisci l'eseguibile e il PDB insieme al file di dump del crash (ad es.nella stessa directory), quindi aprire ed eseguire il dump del crash in VS, VS troverà e utilizzerà il PDB/EXE localmente.Inoltre, verrà richiesta anche la posizione del codice sorgente quando si fa clic su una voce nello stack di chiamate:indicandolo a qualunque codice sorgente sia rilevante, funziona tutto bene, il che è fantastico!

Comunque, spero che questo aiuti qualcun altro...:)

Certamente è possibile, come ha già sottolineato On Freund.Ma se è solo così che i sorgenti possano essere individuati e caricati durante il debug, allora un modo migliore sarebbe impostare il percorso di origine in modo corrispondente.Una volta impostato in un debugger, preverrà tutti i percorsi codificati all'interno dei PDB.

In windbg (ad esempio):

.srcpath+ percorso_della_root_origine
o questo (nel caso tu stia eseguendo il debug in remoto):
.lsrcpath+ percorso_della_root_origine

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top