2008-09-16 25 views
41

que escuché usando archivos PDB pueden ayudar a diagnosticar dónde ocurrió un bloqueo?
Mi básico entendiendo es que le das a Visual Studio el archivo fuente, el archivo pdb y la información del bloqueo (del Dr. Watson?)
¿Puede alguien explicar cómo funciona todo/qué implica? (¡Gracias!)¿Cómo uso los archivos PDB

+0

Gracias por las respuestas hasta el momento (voy a dejar la pregunta abierta un poco más) también he encontrado esto útil: http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx – hamishmcn

Respuesta

30

Los archivos PDB se generan cuando crea su proyecto. Contienen información relacionada con los binarios creados que Visual Studio puede interpretar.

Cuando un programa se bloquea y genera un informe de bloqueo, Visual Studio puede tomar ese informe y vincularlo de nuevo al código fuente a través del archivo PDB de la aplicación. ¡Los archivos PDB deben compilarse desde el mismo archivo binario que generó el informe de bloqueo!

Hay algunos problemas que hemos encontrado con el tiempo.

  • La máquina que está depurando el informe de fallas necesita tener la fuente en la misma ruta que la máquina que creó el binario.
  • versión se basa a menudo a optimizar en la medida en que no se puede ver el estado de las variables miembro del objeto

Si alguien sabe cómo derrotar a la antigua, estaría agradecido por alguna entrada.

+5

Una forma de ayudar con la ruta del archivo fuente: use SUBST para asignar una letra de unidad a un directorio en particular. http://technet.microsoft.com/en-us/library/bb491006.aspx – MarkJ

+0

La mayoría de los depuradores que he visto también le permiten introducir reemplazos de ruta arbitrarios, pero posiblemente eso no esté disponible en Visual Studio. Nunca lo intenté, pero es una de estas cosas que generalmente necesita hacer para depurar un programa compilado por otra persona. – jakobengblom2

34

Los archivos PDB asignan el MSIL de un ensamblaje a las líneas fuente originales. Esto significa que si coloca el PDB que se compiló con el ensamblaje en el mismo directorio que el ensamblado, los rastreos de su pila de excepción tendrán los nombres y las líneas de las posiciones en los archivos fuente originales. Sin el archivo PDB, solo verá el nombre de la clase y el método para cada nivel del seguimiento de la pila.

+3

+1: Para una buena descripción de lo que contiene una "base de datos de programa" (PDB). – AMissico

12

Debería considerar la configuración de un servidor de símbolos y la indexación de los archivos PDB a su sistema de control de código fuente. Recientemente realicé este proceso para nuestro producto y funciona muy bien. No tiene que preocuparse por hacer que los archivos PDB estén disponibles con los binarios, ni cómo obtener el código fuente apropiado al depurar los archivos dump.

libro de John Robbins: http://www.amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1222366012&sr=8-1

Mire aquí por un código de ejemplo para generar minivolcados (que no tiene que limitarse a un análisis posterior al accidente - se puede generar en cualquier momento de su código sin estrellarse): http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx

+0

¡Excelente enlace sobre cómo configurar un servidor de símbolos fuente! Podría hacer eso. +1 para el enlace. – dotnetdev