¿Cómo identifica (y obtiene acceso a) los módulos / símbolos de depuración para usar cuando se proporciona Windows .dmp o .minidmp?

StackOverflow https://stackoverflow.com/questions/402314

Pregunta

De una manera que sigue desde leyendo un archivo windows * .dmp

Habiendo recibido un archivo de volcado de un cliente aleatorio, ejecutando la sesión de depuración para ver el bloqueo, a menudo se encuentra en una biblioteca de MS u otro tercero. El siguiente problema es que es posible que no tenga conocimiento de la configuración de la PC hasta el punto de poder asegurarse de que tiene los módulos disponibles.

Por ejemplo, actualmente estoy atascado intentando que los símbolos se carguen para ntdll.dll (5.01.2600.5512). En MSVC 2005, la columna de la ruta en la ventana de la lista de módulos muestra un * antes del nombre completo del archivo y se niega a cargar los símbolos que he descargado para XP / SP1 / SP1a / SP2 / SP3.

Tengo la configuración del servidor de símbolos para descargar desde Internet y almacenar en un caché local que parece haber funcionado bien para los módulos que tengo en mi PC. Usando GUI equivalente al método

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

Tal vez tenga los símbolos equivocados, pero como no se están descargando otros nuevos, ¿a dónde voy para el próximo? ¿Tengo que contactar al cliente y preguntar qué SP han instalado y cualquier otro parche? ¿Tengo que instalar esa máquina y luego ejecutar el depurador con el archivo dmp para obtener los símbolos que necesito?

¿Fue útil?

Solución

¿Qué estás usando para depurar el minivolcado? Es decir, WinDBG o Visual Studio? ¿Y cómo se generó el minidump?

Debe haber suficiente información en el minidump para resolver correctamente los símbolos dll del sistema. ¿Está utilizando una descarga local de símbolos o http://msdl.microsoft.com/ ?

Actualización: debería poder agregar el almacén público de símbolos de Microsoft a las ubicaciones de Herramientas > Opciones > Depuración > Símbolos > Símbolo (.pdb), y luego cargar manualmente los símbolos haciendo clic con el botón derecho en el módulo en la ventana de Módulos y cargarlos si no se hace automáticamente.

También es posible (probable) que VS 2005 no mire _NT_SYMBOL_PATH para resolver los símbolos de minivolcado.

Otros consejos

Si está utilizando WinDbg (parte de las Herramientas de depuración para Windows package), entonces es simple hacer que extraiga los símbolos correctos de Microsoft automáticamente. Configure la ruta del símbolo utilizando el " .symfix " (o " .symfix + " ;, simplemente anexar a su ruta de búsqueda de símbolos existente).

Una vez que haya hecho eso y haya cargado el volcado de memoria en WinDbg, escriba " .reload / f " para hacer que WinDbg vuelva a cargar los símbolos. Utilizará la información dentro del archivo de volcado para extraer los símbolos correctos del servidor de símbolos públicos de Microsoft, independientemente de las DLL que tenga en su máquina.

Si por algún motivo los símbolos no se cargan correctamente después de haber hecho esto, ingrese "! sym ruidoso " en la ventana de comandos de WinDbg y vuelva a cargar los símbolos nuevamente. A medida que WinDbg intente cargarlos, verá que genera cualquier error que encuentre en su proceso de búsqueda / carga. Estos mensajes de error lo ayudarán a diagnosticar más a fondo lo que va mal y por qué no se cargan los símbolos correctos.

Esta publicación contiene información que también puede ser de utilidad.

Si estás escribiendo " Establecer _NT_SYMBOL_PATH = srv ... " en un símbolo del sistema, hay dos cosas a tener en cuenta:

    El comando set de
  • cmd.exe no ignora los espacios en blanco, por lo que define una variable llamada " _NT_SYMBOL_PATH " ;, no " ; _NT_SYMBOL_PATH " ;.
  • Debe iniciar el depurador como hijo de ese símbolo del sistema. Sin embargo, no tiene que hacer esto si usa el Panel de control para establecer variables de entorno persistentes, o si usa el comando setx (en Windows Vista o en uno de los kits de recursos de Windows).

Si está configurando la ruta del símbolo de otra manera, esto no se aplica.

Intente seguir las instrucciones en este artículo de kb , y asegúrese de que su ruta de símbolo esté configurada correctamente, que WinDbg tiene acceso a él y que los símbolos ntdll (por ejemplo) se descargan realmente a su caché de símbolos. El artículo también proporciona instrucciones sobre cómo descargar y verificar manualmente los símbolos en su caché a través de la herramienta SymChk.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top