Pregunta

Yo uso pstack para analizar core archivos de volcado en Solaris

Cómo puedo analizar el volcado de núcleo de solaris?

¿Qué comandos se pueden utilizar para hacer esto?

¿Qué otra información estará disponible desde el vertedero?

¿Fue útil?

Solución

Usted puede utilizar Solaris modular depurador,mdb, o dbx.mdb viene con SUNWmdb (o SUNWmdb x para la versión de 64 bits versión del paquete.

Un archivo de núcleo es la imagen de su proceso de ejecución en el momento en el que se estrelló.

Dependiendo de si la aplicación se compila con indicadores de depuración o no,usted será capaz de ver una imagen de la pila, por lo tanto para saber que función causado el núcleo, para obtener el valor de los parámetros que se pasan a la función, el valor de las variables, la memoria asignada zonas ...

En los últimos solaris versiones, puede configurar lo que es la esencia que contendrá el archivo con el comando coreadm ;por ejemplo, usted puede tener la memoria asignada segmentos del proceso se adjunta.

Consulte MDB documentación y dbx documentación.El GDB de referencia rápida la tarjeta también es útil una vez que usted sabe los fundamentos de GDB.

Otros consejos

Supongo que cualquier respuesta a esta pregunta debe comenzar con una sencilla receta:

Para dbx, la receta es:

% dbx a.out core
(dbx) where
(dbx) threads
(dbx) thread t@3
(dbx) where

Si el volcado de núcleo es de un programa que escribió o construido, a continuación, utilizar el depurador que normalmente se utiliza para depurar la aplicación en ejecución.Todos ellos deben ser capaces de cargar los archivos principales.Si no eres exigente con los depuradores, y usted está usando Solaris, yo recomendaría dbx.Que le ayudará a conseguir la última FCS de la versión de Sun Studio con parches, o bien la última versión Express de Sun Studio.También es muy útil si usted puede cargar el archivo de núcleo en el depurador en el mismo sistema en el que el núcleo se creó el archivo.Si el código de las bibliotecas es diferente de cuando el núcleo se creó el archivo, a continuación, el seguimiento de la pila no será útil cuando se va a través de las bibliotecas.Depuradores utilizar también OS auxiliar de bibliotecas para la comprensión de la libthread y enlazador dinámico de estructuras de datos, así que SI usted necesita para cargar el archivo de núcleo en una máquina diferente, usted querrá asegurarse de que la auxiliar de bibliotecas instaladas en el sistema operativo coinciden con las estructuras de datos del sistema en el sistema operativo.Usted puede encontrar todo lo que usted nunca quiso saber sobre estas bibliotecas del sistema en un papel blanco que fue escrito hace un par de años.

http://developers.sun.com/solaris/articles/DebugLibraries/DebugLibraries_content.html

Yo sugeriría tratando de gdb primero como que es más fácil aprender las tareas básicas que la nativa de Solaris depuradores en mi opinión.

GDB puede ser utilizado.

Se puede dar a la llamada que se intentó antes de la descarga.

http://sourceware.org/gdb/

http://en.wikipedia.org/wiki/GDB

Tener la fuente es grande y si puede reproducir los errores, incluso mejor que usted puede usar esto para depurar.

Funcionó muy bien para mí en el pasado.

El pflags comando también es útil para determinar el estado de cada hilo estaba cuando se colapsaba.De esta manera usted puede a menudo determinar el problema.

Adjuntar a la imagen de proceso utilizando el depurador dbx:

dbx [executable_file_name] [coredump_file_name]

Es importante que no hubo cambios en el archivo ejecutable desde el núcleo fue objeto de dumping (es decir,no fue reconstruido).

Usted puede ver la traza de la pila para ver donde el programa se estrelló con dbx comando "donde".

Usted puede mover arriba y abajo de la pila con el comando "arriba" y "abajo", o saltar a la exacta marco de pila con "frame [número]", con los números visto en la salida de "dónde".

Usted puede imprimir el valor de las variables o expresiones con "print [expr]" comando.

La diversión.

He encontrado dbx en mi solaris x86 cuadro en

/opt/SUNWspro/bin/dbx

Saludos!

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