2010-07-27 13 views
7

¿Cuál es la mejor forma de analizar bloqueos en Linux?Análisis de bloqueos en Linux

Esperamos construir el software y entregar una versión de lanzamiento a los evaluadores. Es posible que los evaluadores no puedan recordar cómo reproducir el choque o que el choque sea totalmente intermitente. Tampoco tendrán un entorno de desarrollo en sus máquinas. El software está escrito en C/C++ y compilado en código máquina nativo para su distribución.

+0

Posible duplicado http://stackoverflow.com/questions/914833/linux-c-how-to-debug-release-application – DumbCoder

Respuesta

7

Si tiene espacio en el disco, dejar que la aplicación crear su coredump cuando se rompe.

ulimit -c unlimited 

Luego puede depurarlo con GDB.

3

Además de coredumping y stacktracing como ya se señaló, asegúrese de que puede identificar fácilmente qué versiones de las personas ejecutables se están ejecutando, y poder responder qué versión de cada archivo fuente va a qué versión binaria (es decir, pasar un tiempo con su sistema de control de código fuente y sus scripts de compilación). De lo contrario, ni un archivo central ni un seguimiento de pila ayudarán.

3

Los volcados de núcleo son útiles, pero no siempre te dicen todo lo que quieres saber sobre cómo terminaste en la condición de error.

Las acciones de registro, entradas y eventos pueden ser muy útiles. Si puede registrar cada ejecución de su programa de tal manera que, en caso de falla, un desarrollador pueda obtener acceso al registro y regenerar el error podría ser muy útil.

Si es posible, debe generar sus programas con los símbolos de depuración máximos generados y luego quítelos si no quiere o no puede permitir que las versiones de lanzamiento los tengan, pero conserve una copia de cada versión publicada con los símbolos de depuración que puede acoplar con el archivo central si necesita depurar un bloqueo.