2010-10-10 33 views
164

¿Qué es un archivo PDB y cómo puedo excluirlo de la carpeta de lanzamiento cuando reconstruyo mi solución?¿Qué es un archivo PDB?

+12

pdb es un archivo de base de datos de programa y se crea en compilación. Este archivo contiene la depuración y la información de estado del proyecto que permite el enlace incremental de una configuración de depuración de su programa. – pavanred

+0

@pavanred ¿está seguro de que el compilador C# también realiza enlaces incrementales? Solo he oído hablar de ello en el mundo de C++. En un proyecto de C++, habilita/deshabilita el enlace incremental desde las propiedades del proyecto. ¿Hay alguna opción en el proyecto C# también? – RBT

Respuesta

165

Un archivo PDB contiene información para que el depurador trabaje. En cualquier caso, hay menos información en una versión de Release que en una versión de Debug. Pero si desea que no se genere en absoluto, vaya a las propiedades de compilación de su proyecto, seleccione la configuración de la versión, haga clic en "Avanzado ..." y en "Información de depuración" seleccione "Ninguno".

+1

@Jon ¿Ayuda a proporcionar información adicional al usuario si la aplicación se bloquea en uso? (es decir, ayuda con la ventana JIT, en lugar de "Este programa debe finalizar, envíe un Informe de errores de Windows") –

+11

Tenga en cuenta que probablemente deba mantener estos incluidos en sus versiones de depuración, ya que permite rastrear excepciones a una línea específica en tu código. Sin los símbolos en el archivo pdb, le resultará difícil identificar problemas específicos para resolverlos. No necesariamente es necesario excluirlos de versiones de lanzamiento, ya que a veces la información adicional en un gran informe puede ser muy útil. – Darbio

+4

@Jared: Sí, incluye un seguimiento de la pila de la excepción, que señalará una función específica y una línea de código. – Darbio

10

A PDB file contiene información utilizada por el depurador. No es necesario ejecutar su aplicación y no necesita ser incluida en su versión lanzada.

Puede desactivar la creación de archivos pdb en Visual Studio. Si está construyendo desde la línea de comando o un script, omita el interruptor /Debug.

+0

El modo de lanzamiento todavía construye PDB por defecto, creo. Sin embargo, puede cambiar las propiedades del proyecto para deshabilitarlo. –

+0

Sí; todavía viene con lanzamiento con un proyecto predeterminado. –

+0

Acabo de comprobar y también obtengo uno por defecto si uso Visual Studio. –

81

Me había preguntado originalmente la pregunta "¿Necesito un archivo PDB desplegado en la máquina de mi cliente?", y después de leer esta publicación, decidí excluir el archivo.

Todo funcionó bien, hasta hoy, cuando estaba tratando de averiguar por qué un cuadro de mensaje que contiene un Exception.StackTrace le faltaba la información del número de línea y archivo, necesario para solucionar el problema de la excepción. Volví a leer esta publicación y encontré el nugget clave de información: aunque el PDB no es necesario para que la aplicación se ejecute, es necesario que los números de archivo y línea estén presentes en la cadena StackTrace. Incluí el archivo PDB en la carpeta ejecutable y ahora todo está bien.

45

PDB es una abreviatura para P rograma D ata B ase. Como su nombre indica, es un repositorio (almacenamiento persistente como bases de datos) para mantener la información requerida para ejecutar su programa en modo de depuración. Contiene mucha información relevante importante requerida mientras depura su código (en Visual Studio), por ej. en qué puntos ha insertado puntos de interrupción donde espera que el depurador se rompa en Visual Studio.

Esta es la razón por la que muchas veces Visual Studio falla al llegar a los puntos de ruptura si elimina los archivos * .pdb de sus carpetas de depuración. El depurador de Visual Studio también puede indicarle el número de línea preciso del archivo de código en el que se produjo una excepción en un rastreo de pila con la ayuda de archivos * .pdb. Entonces, efectivamente, los archivos pdb son realmente una gran ayuda para los desarrolladores al depurar un programa.

Generalmente, no se recomienda excluir la generación de archivos * .pdb. Desde el punto de vista de la versión de producción al máximo, lo que debe hacer es crear los archivos pdb pero no enviarlos al sitio del cliente en el instalador del producto. Preserve todos los archivos pdb generados en un servidor de símbolos desde donde puede usarse/referenciarse en el futuro si es necesario. Especialmente para casos en los que se solucionan problemas como fallas en el proceso. Cuando comienza a analizar los archivos de volcado de bloqueo y si sus archivos originales * .pdb creados durante el proceso de compilación no se conservan, Visual Studio no podrá distinguir la línea exacta de código que causa el bloqueo.

Si aún desea deshabilitar la generación de archivos * .pdb para cualquier versión, vaya a las propiedades del proyecto -> Ficha Construir -> Haga clic en el botón Avanzado -> Elija ninguno para el campo "Información de depuración" -> presione OK como se muestra en la instantánea a continuación.

None Debug Info setting for a C# Project

Nota: Este ajuste tendrá que hacerse por separado para "depuración" y "Release" construir configuraciones.