2010-02-23 8 views
6

Estoy tratando de depurar una segfault en una aplicación en la que estoy trabajando (funciona en Linux, por supuesto, así que no puedo usar eso como mi alternativa para depurar core dumps). De todos modos, he configurado "ulimit -c unlimited" y el leopardo de las nieves informa "Fallo de segmentación (núcleo volcado)", pero lamentablemente no se encuentra ningún archivo central. ¿Snow Leopard los coloca en algún lugar especial o hay alguna otra opción que necesito habilitar? Sorprendentemente poco regresó cuando googleé esto ...¿Snow Leopard pone vertederos en algún lugar especial?

+0

¿Puede ejecutar su aplicación bajo el depurador (XCode o simple gdb)? –

+0

Puedo, pero a menudo es un dolor, especialmente si mi código está vinculado a Python o algo similar. Otras veces, los segmentos no son reproducibles, así que me gustaría poder realizar la autopsia correctamente. –

Respuesta

6

Necesita configurar launchd para que realmente escriba los volcados del núcleo. Puede encontrar las instrucciones para hacerlo en este Apple TechNote.

Básicamente, necesita habilitar los volcados de memoria mediante la adición de la línea:

limit core unlimited 

a su archivo /etc/launchd.conf, creando si es necesario, y luego volver a arrancar.

También puede habilitar el volcado de memoria para una sola sesión de terminal llamando:

ulimit -c unlimited 

antes de iniciar la aplicación de línea de comandos.

Puede encontrar los volcados de memoria en /cores. Tenga cuidado, ya que los volcados del núcleo pueden ser grandes y pueden llenar fácilmente su unidad si no limpia el directorio /cores de forma regular.

+0

Aha! Exactamente lo que quería! Me pregunto por qué decidieron almacenarlos allí en lugar de en el directorio de trabajo ... –

+0

Sospecho que es más fácil eliminarlos. Si los volcados centrales están habilitados en todo el sistema, podría terminar con una gran cantidad de archivos grandes diseminados por el sistema si se colocaran en el directorio de trabajo. –

1

Esto es solo una conjetura salvaje, pero ¿has verificado /Library/Logs/DiagnosticReports/?

+0

Parece que tengo una. Supongo que no sé cómo usar una computadora. Sin embargo, no hay archivos base = ( –

+1

Pruebe también ~/Library/Logs/DiagnosticReports/para informes de fallos de aplicaciones. En OS X, el árbol/Library se duplica para cada usuario bajo ~/Library. Si su aplicación se ejecuta en espacio de usuario, OS X colocará el informe del bloqueo en ~/Library. –

Cuestiones relacionadas