c++ - ucrtbased - simbolos visual studio
El archivo PDB del compilador y el archivo PDB Linker (1)
Honestamente, no sé para qué se utiliza exactamente el archivo .pdb generado por el paso de compilación. Supongo que se trata de información intermedia que el vinculador obtiene en el archivo .pdb final.
Sin embargo, la conclusión es que para fines de depuración todo lo que necesita es el archivo .pdb producido por el enlazador.
Actualización: una pequeña excavación generó esto desde http://blogs.msdn.com/b/yash/archive/2007/10/12/pdb-files-what-are-they-and-how-to-generate-them. aspx :
¿Cuáles son los dos tipos de archivos .PDB?
===========================
Hay dos tipos de archivos PDB. Uno generado por el compilador llamado VCx0.PDB (por ejemplo, vc80.pdb) y otro el .PDB.
El compilador genera el archivo VCx0.PDB y está relacionado con el archivo .OBJ. Contiene el tipo de información solamente.
Los archivos .PDB son generados por el enlazador y están relacionados con el ejecutable de destino o la DLL. Este archivo contiene la información completa de depuración. Cuando estamos depurando, necesitamos este archivo ''.pdb'' para alinear los símbolos. La marca de tiempo del archivo de destino y el AP debe coincidir.
Me estoy confundiendo en cuanto a cuál es la diferencia entre el compilador y PDB
archivos PDB
vinculados respectivamente (es decir, en Visual Studio, Project Properties > C/C++ > Output Files > Program Database File Name
vs Project 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
por el vinculador se genera para el binario (exe o dll) y es el uno utilizado para la depuración.
Si eso no es cierto, por favor explique la diferencia. De cualquier manera, qué hacer cuando estoy creando un DLL
donde tengo la opción de seleccionar el archivo PDB
salida 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 / dlls son utilizadas 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 unaDLL
, ¿necesito que los archivosPDB
se depuren correctamente o solo el generado por el enlazador?