Descripción de los archivos .pdb y de los archivos .DBG

Seleccione idioma Seleccione idioma
Id. de artículo: 121366 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

La extensión .pdb acrónimo de "base de datos de programa". Contiene el nuevo formato para almacenar información de depuración que se presentó en Visual C++ versión 1.0. En el futuro, el archivo .pdb contendrá también otra información de estado del proyecto. Uno de las motivaciones más importantes del cambio de formato era permitir la vinculación incremental de versiones de depuración de programas, un cambio introducido por primera vez en la versión 2.0 de Visual C++.

La extensión .DBG es el acrónimo "debug". Los archivos .DBG creados con el conjunto de herramientas NT de 32 bits están en el formato de archivo ejecutable portable (PE). Contienen secciones con formato COFF, FPO y alguna información de CodeView casos. El depurador de Visual C++ integrado puede leer archivos .DBG en este formato, sin embargo, pasa por alto las secciones de símbolos COFF y busca la información de CodeView.

Si necesita determinar qué información de símbolos se encuentra en un archivo .DBG, puede escribir lo siguiente en el símbolo del sistema:
Dumpbin sample.dbg/symbol.
				
Nota la ruta de acceso podría necesitar incluir directorios para DUMPBIN.exe y MSdis100.dll:
Path=%Path%;C:\Program Files\DevStudio\VC\bin;C:\Msssdk\bin
				
Para obtener más información acerca de DUMPBIN, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
177429Ejemplos del resultado DUMPBIN

Más información

Los archivos .pdb

Aunque las versiones anteriores, de 16 bits de Visual C++ utilizan archivos .pdb, la información de depuración almacenada en ellos se anexa al final del archivo .exe o .dll por el vinculador. En las versiones de Visual C++ se ha mencionado anteriormente, el vinculador y el depurador integrado se modificaron para que los archivos .pdb se utiliza directamente durante el proceso de depuración, lo que elimina importantes cantidades de trabajo para el vinculador y también omitir el límite CVPACK engorroso de tipos de 64 KB.

Para obtener más información acerca de las limitaciones de CVPACK, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
112335Error: CK1020 o CK4009 encontrado al información de tipo supera los 64 K
<project>De forma predeterminada, cuando genere proyectos generados por el trabajo de Visual /FD de modificador del compilador sirve para cambiar el nombre <proyecto> pdb del archivo PDB. Por lo tanto, tendrá sólo un archivo .pdb para todo el proyecto.

Cuando ejecuta archivos MAKE que no se generaron mediante Visual Workbench y la /FD no se utiliza con/Zi, terminará con dos archivos PDB:
  • VCx0.PDB (donde "x" hace referencia a la versión principal de la correspondiente de Visual C++, o "2"o "4"), que almacena información de depuración todo para los archivos .obj individuales. Reside en el directorio donde reside el archivo MAKE de proyecto.
  • <project><proyecto>.pdb, que almacena toda información de depuración para el archivo .exe resultante. Se encuentra en el subdirectorio \WINDEBUG.
¿Por qué dos archivos? <project>Cuando se ejecuta el compilador, no sabe el nombre del archivo .exe en el que se vincularán los archivos .obj, por lo que el compilador no puede colocar la información en <proyecto> pdb. Los dos archivos almacenan información diferente. Cada vez que compila un archivo .obj, el compilador combina la información de depuración en VCX0.PDB. No coloque en información de símbolo, como definiciones de función. Sólo se coloca en información sobre tipos. Una ventaja de esto es que, cuando cada archivo de origen incluye archivos de encabezado comunes como <windows.h>, todo los typedefs de estos encabezados sólo se almacenan una vez, en lugar de cada archivo .obj.

<project>Al ejecutar el vinculador, crea <proyecto>.pdb, que contiene la información de depuración para archivo .exe del proyecto. <project>Información de depuración todo, incluidos prototipos de función y todo lo demás, se coloca en PDB, no sólo la información de tipo se encuentra en VCX0.PDB <proyecto>. Los dos tipos de archivos .pdb comparten la misma extensión porque son similares desde el punto de vista de la arquitectura; ambos permiten actualizaciones incrementales. No obstante, realmente almacenan información diferente.

<project>El nuevo depurador de Visual C++ utiliza el archivo PDB de <proyecto> creado directamente por el vinculador e incrusta la ruta absoluta la PDB en el archivo .exe o .dll. Si el depurador no puede encontrar el archivo PDB en esa ubicación o si la ruta de acceso no es válida (si, por ejemplo, el proyecto se movió a otro equipo), el depurador buscará en el directorio actual.

Los archivos .DBG

El depurador de Visual C++ integrado también puede utilizar .DBG archivos mientras se realizan desde un binario que contiene formato de CodeView salida de depuración. Estos son útiles para la depuración cuando el código fuente no está disponible. Incluso sin el origen .DBG archivos permiten establecer puntos de interrupción en funciones, variables de inspección y vea las funciones de la pila de llamadas. También son necesarios para la depuración OLE RPC.

Es necesario señalar una advertencia: cuando se trabaja con símbolos de un archivo .DBG, deberá utilizar los nombres totalmente decorados. Por ejemplo, para establecer un punto de interrupción en una llamada a una función sndPlaySound de Windows, podría especificarse _sndPlaySoundA@8 como la ubicación.

Existen realmente dos .DBG formatos de archivo. El antiguo formato ha existido durante bastante tiempo en el mundo de 16 bits. For example, because the format of .COM files is a simple binary image loaded into memory, the Codeview debugging information could not be appended to the end of the file because the file size might exceed the 64K limit for a .COM file. Por lo tanto la información simbólica en su lugar se colocar en un archivo .DBG independiente, que tenía sólo información de CodeView en él. También se puede generar los archivos .DBG al ejecutar CVPACK en un archivo .exe con la opción /strip.

Controlador de símbolos del depurador no pueda leer el antiguo formato para .exe de 32 bits, versión de Visual C++ 2.x y 4.x. En su lugar, lee el formato utilizado en los archivos Windows .DBG, proporcionado para utilizar con sus archivos DLL de sistema. Estos archivos .DBG están en el formato de archivo ejecutable portable (PE) y contienen secciones con COFF, FPO y en algunos casos CodeView la información simbólica. El nuevo depurador de Visual C++ lee archivos .DBG en este formato sólo. Además, sólo utiliza la información de CodeView, omitiendo las secciones de símbolo.

Es posible eliminar información de depuración de un archivo PE y almacenarla en un archivo .DBG para su uso por depuradores. Para que esto funcione, el depurador necesita saber si desea encontrar la información de depuración en un archivo independiente o no y si se ha eliminan la información del archivo o no. Sería un método para que el depurador buscar en el archivo ejecutable buscando información de depuración. Sin embargo, para guardar el depurador de tener que buscar el archivo, un campo de característica de archivo (IMAGE_FILE_DEBUG_STRIPPED) se inventó que indica que ha sido eliminan el archivo. Pueden buscar los depuradores de este campo en el encabezado del archivo PE para determinar rápidamente si la información de depuración está presente en el archivo o no.

Para generar un archivo .DBG en este formato, puede utilizar REBASE.exe, que se proporciona con el SDK de Win32. Consulte la documentación Win32 SDK para obtener más detalles.

Durante las generaciones de comercial de Windows, símbolos de depuración se eliminan de los archivos binarios del sistema y controladores y almacenan en archivos .DBG independientes. Esto se hizo porque el depurador de núcleo de Windows puede utilizar estos archivos .DBG y proporcionar símbolos de depuración incluso para controladores optimizados. No obstante, recuerde que el depurador de Visual C++ integrado no está diseñado para depurar el código del núcleo en modo protegido.

Pueden encontrar los símbolo de archivos en un subdirectorio de depuración del directorio \Support en el CD-ROM comercial de Windows NT. Estos archivos deben copiarse desde el CD-ROM al disco duro. Para depuración en modo usuario del equipo de destino depurador, símbolos .DBG deben estar presentes en el directorio de \<winnt>\SYMBOLS Windows del sistema de destino (<winnt> es el directorio donde está instalado Windows NT). El programa de instalación nuevo de Visual C++ instala un icono de "Instalación de símbolos del sistema de NT" en el grupo de programas. Puede utilizar para copiar automáticamente los archivos .DBG desde el disco de CD-ROM de Windows NT Workstation en la estructura de directorios correcta en la unidad de disco duro. Este método no funciona para el CD-ROM de Windows NT Server 4.0, puesto que los archivos .DBG se almacenan en formato comprimido.

Para la depuración del núcleo, coloque .DBG archivos en un árbol de símbolos bajo el directorio especificado por la variable de entorno _NT_SYMBOL_PATH (por ejemplo, C:\DEBUG\SYMBOLS). Depuración del núcleo es posible con un conjunto mínimo de símbolos que consta de símbolos para todos los controladores (*.SYS) en el directorio SYMBOLS\SYS y símbolos para Ntoskrnl.exe y HAL.dll en los directorios SYMBOLS\EXE y SYMBOLS\DLL, respectivamente. Para obtener más información sobre depuración del núcleo, consulte la discusión sobre la depuración del núcleo en la Guía del programador de DDK de Windows NT.

Aunque teóricamente es posible volver a convertir de un archivo .pdb en un archivo .DBG, no es una tarea trivial. En este momento, sabemos de ningún dicha herramienta. Si oímos de dicha herramienta, actualizaremos este artículo en Microsoft Knowledge Base.

Propiedades

Id. de artículo: 121366 - Última revisión: viernes, 05 de agosto de 2005 - Versión: 3.1
La información de este artículo se refiere a:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Visual C++ 5.0 Standard
  • Microsoft Visual C++ 6.1
Palabras clave: 
kbmt kbbug kbdebug kbide kbinfo KB121366 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 121366
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com