¿Cómo cambio las ubicaciones de los archivos fuente en un archivo de símbolos (pdb)?

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

  •  09-06-2019
  •  | 
  •  

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)?

¿Fue útil?

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_fuente
o esto (en caso de que esté depurando de forma remota):
.lsrcpath+ ruta_a_raíz_fuente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top