¿Cómo cambio las ubicaciones de los archivos fuente en un archivo de símbolos (pdb)?
Pregunta
Básicamente lo que quiero hacer es esto:un archivo pdb contiene una ubicación de los archivos fuente (p. ej. C:\dev\proj1\helloworld.cs
).¿Es posible modificar ese archivo pdb para que contenga una ubicación diferente (p. ej. \more\differenter\location\proj1\helloworld.cs
)?
Solución
Puede utilizar la función de indexación de código fuente de las herramientas de depuración para Windows, que guardará las referencias a las revisiones apropiadas de los archivos en su repositorio de código fuente como una secuencia alternativa en el archivo PDB.
Otros consejos
Si busca ser más genérico acerca de las rutas incrustadas en un archivo pdb, primero puede usar MS-DOS subst
comando para asignar una carpeta en particular a una letra de unidad.
subst N: <MyRealPath>
Luego abra su proyecto en relación con N:conducirlo y reconstruirlo.Sus archivos PDB harán referencia a los archivos fuente en N:.Ahora no importa dónde coloque ese conjunto particular de archivos fuente, siempre y cuando posteriormente llame al directorio raíz "N:" como lo hizo cuando lo creó.
Esta práctica es recomendada por John Robbins en su excelente libro, Aplicaciones de depuración para Microsoft .NET y Microsoft Windows.
Quería encontrar la respuesta a esto para depurar un volcado de memoria que se produjo en un ejecutable que no compilé en mi máquina, por lo tanto, la ruta al código fuente al que se hace referencia en el PDB no era válida, al igual que la ruta al PDB. referenciado en el ejecutable.
Después de buscar y no encontrar algo que funcione, descubrí que si colocas el ejecutable y el PDB junto al archivo de volcado de memoria (es decir,en el mismo directorio) luego abra y ejecute el volcado de memoria en VS, VS encontrará y utilizará el PDB/EXE localmente.Además, también solicitará la ubicación del código fuente al hacer clic en una entrada en la pila de llamadas:apuntándolo al código fuente que sea relevante, todo funciona bien, ¡lo cual es genial!
De todos modos, espero que esto ayude a alguien más... :)
Sin duda es posible, como ya ha señalado On Freund.Pero si es sólo para que las fuentes puedan ubicarse y cargarse durante la depuración, entonces una mejor manera sería establecer la ruta de la fuente correspondientemente.Una vez configurado en un depurador, prevalecerá sobre todas las rutas codificadas dentro de las PDB.
En windbg (por ejemplo):
.srcpath+ ruta_a_raíz_fuenteo esto (en caso de que esté depurando de forma remota):
.lsrcpath+ ruta_a_raíz_fuente