c++ windows visual-studio cmake pdb

c++ - Archivos PDB con la instalación de cmake



windows visual-studio (4)

Estoy usando un comando CMAKE para instalar archivos PDB para habilitar la depuración en una distribución de desarrollador de mi aplicación C ++. El comando es el siguiente:

INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/Debug DESTINATION bin FILES_MATCHING PATTERN *.pdb )

Además, he logrado instalar la fuente relevante utilizada para compilar esa distribución de desarrollador, en una carpeta ''src'' en el mismo nivel, para que mi carpeta de distribución de nivel superior tenga el siguiente aspecto:

include/ src/ lib/ bin/ share/ doc/ 3rdparty/ etc/

Mi pregunta es ¿cómo puedo permitir que los archivos PDB "sepan" dónde está la fuente (supongo que esto es obligatorio)? ¿Hay un comando CMAKE que pueda lograr esto? Aprecie un pequeño ejemplo si lo tiene. Gracias por tu tiempo e interés.


Acabo de responder a mi propia pregunta similar Cómo obtener cmake para instalar archivos pdb para destinos . Utilice esta regla de instalación para copiar el archivo pdb del destino, si existe, al directorio bin de ubicación de instalación del destino.

install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION bin OPTIONAL)


Convertir mis comentarios en una respuesta; basado en gran medida en la información de esta pregunta y los enlaces que hay allí.

Los archivos PDB almacenan nombres de ruta absolutos en los archivos fuente. Cuando no se usa un servidor de símbolos, la única forma de garantizar cierto grado de relocalización del código fuente es usar el comando subst .

La idea es usar subst para crear un nombre de letra de unidad (por ejemplo, N:/ ) para la raíz del árbol fuente. Luego haga sus compilaciones desde esta unidad, de modo que las rutas absolutas que comiencen con N:/ se incrusten en las PDB. Cuando más tarde necesite depurar el ejecutable en una máquina diferente, use subst en esa máquina para obtener las mismas rutas absolutas a las fuentes. Esto permitirá que los PDB encuentren los archivos fuente.

Por ejemplo, si tiene un archivo C:/MySources/main.cpp , haga lo siguiente:

subst N: C:/MySources N: run your build

Más adelante, digamos que necesita depurar en una máquina donde el mismo archivo se almacena en D:/Devel/Other/main.cpp . Simplemente haga el subst N: D:/Devel/Other y luego trabaje desde el N: maneje allí también.


El archivo pdb almacena la ruta a los archivos tal como estaban cuando se compiló el programa. No hay nada que deba hacer para que sepa dónde estaba la fuente.


Solo necesita informar al estudio visual donde se encuentra la fuente. Aparecerá un cuadro de diálogo del buscador de archivos, simplemente señale la fuente en su máquina local si las rutas difieren de cuando se construyó.