2011-12-12 12 views
8

ulimit -c se puede utilizar para establecer RLIMIT_CORE, y limitar el tamaño máximo de un núcleo generado por un proceso. Cualquier coredump más grande se truncará a este tamaño.¿De qué sirve un coredump truncado?

¿Se puede hacer algo útil con un núcleo tan truncado? Tal vez en una plataforma que no sea Linux x86-64, o con un depurador que no sea GDB?

Si no es así, ¿por qué POSIX specify this behavior, en lugar de, por ejemplo, truncar un coredump a cero bytes si se excede RLIMIT_CORE?

+0

No estaba seguro de si publicar esto aquí o en [unix.se]. Me gustaría volver a publicarlo allí, si eso es más apropiado. – daxelrod

Respuesta

6

¿Se puede hacer algo útil con un núcleo tan truncado?

Sí, lotes de cosas.

El volcado del núcleo truncado generalmente contendrá los segmentos de la pila, por lo que los comandos where y thread apply all where suelen funcionar. A menudo eso es todo lo que se necesita de un núcleo. Los comandos para examinar variables locales y globales probablemente también funcionen.

Los comandos para examinar las variables asignadas en el montón pueden funcionar para algunas variables, pero no necesariamente para otras. Aún así, esto es mucho mejor que nada.