me estoy confundido en cuanto a lo que es la diferencia entre el compilador y el enlazador PDB
archivos respectivamente (es decir, en Visual Studio, Project Properties > C/C++ > Output Files > Program Database File Name
vsProject Properties > Linker > Debugging
). He intentado encontrar la respuesta en línea y hasta ahora sé (puede estar equivocado) que se genera un archivo PDB
por el compilador para los archivos obj
, mientras que el archivo PDB
del enlazador se genera para el archivo binario (exe o dll) y es el uno utilizado para la depuración.archivo PDB compilador y el enlazador AP archivo
Si eso no es cierto, explique la diferencia. De cualquier manera, qué hacer cuando estoy creando un DLL
donde tengo la opción de seleccionar el archivo de salida PDB
para el compilador, así como el enlazador y qué hacer cuando estoy creando un archivo LIB donde solo el compilador genera los archivos PDB
ya que no hay enlaces realizados.
Antecedentes: Las bibliotecas/archivos DLL son utilizados por varios proyectos, que luego necesitan los archivos
PDB
para la depuración. En el caso de un archivolib
, no hay ambigüedad, ya que solo se genera un archivoPDB
. Pero en el caso de unDLL
, ¿necesito los archivosPDB
para depurar correctamente o solo el generado por el vinculador?
(Realizado esto antes de su actualización, pero se aplica a la actualización también) Así que cuando se crea el archivo 'lib' (es decir, una biblioteca estática), y sólo el compilador puede generar el' AP 'archivo porque el enlazador ya no es necesario, ¿significa que ahora el archivo' pdb' generado por el compilador es el necesario para la depuración? – Samaursa
.Lib archivos no están involucrados en la ejecución o depuración de un programa. Son solo entradas para el enlazador. Las 'cosas' apropiadas en un archivo lib se hacen parte del binario (en el caso de una biblioteca estática) o se usan para crear enlaces dinámicos a archivos DLL (en el caso de una biblioteca de importación). En cualquiera de esos casos, el archivo .pdb que necesitaría para la depuración es el producido por el vinculador cuando se produce el archivo .exe o .dll real. –
Genial, gracias por elaborar Michael, voy a seguir adelante y comprobar esto como la respuesta correcta. Aunque ya que estamos en el tema, si puede responder esto. Havok SDK está vinculado estáticamente, y todas sus bibliotecas vienen con sus respectivos archivos 'PDB'. Lo interesante es que, si enlazas las bibliotecas sin los archivos 'PDB' que las acompañan en el mismo directorio, entonces Visual Studio da un montón de advertencias de que' Falta información de depuración, compilando como si no hubiera información de depuración' (Yo soy paráfrasis) – Samaursa