¿Cómo podemos rastrear problemas de bloqueo de programas en Linux?

12

Si una aplicación falla en Windows, podemos verificar el Visor de eventos en las herramientas de administración para ver qué se ha bloqueado. A veces tiene información útil, otras no, pero es un comienzo.
En Linux, si una aplicación (alguna) falla, ¿cómo se comienza a rastrear lo que sucedió?
¿Hay, por ejemplo, algún registro central o algo similar?

Jim
fuente
2
La forma estándar de depurar este tipo de cosas es iniciar la aplicación problemática desde un terminal de forma manual. De esa manera puede ver los mensajes de error impresos.
terdon
2
Las versiones de 64 bits de Linux registrarán una breve descripción de un proceso bloqueado (uno que murió debido a una señal) en /var/log/syslog. Linux proporciona una manera para que un demonio sea notificado de fallas en el proceso. El apport de Ubuntu y el abrt de Red Hat lo utilizan para proporcionar servicios centralizados de registro y generación de informes. En general, se guarda un volcado de núcleo para que pueda invocar un depurador en el programa bloqueado.
Mark Plotnick
Hubiera votado a favor de esta pregunta, pero el OP no parece querer ayudar a la comunidad aceptando o publicando una respuesta, por lo que encontraré una pregunta similar que acepte una respuesta y la votaré con la esperanza de que lo haga. llegar a la cima de los resultados de búsqueda y ayudar a los futuros buscadores
Mawg dice que reinstale a Monica el

Respuestas:

13

¿Hay, por ejemplo, algún registro central o algo similar?

El lugar normal para los registros del sistema es /var/log/. Lo que se pone en cada registro depende de la configuración de syslog, pero comúnmente todo, excepto los inicios de sesión, se dirige a /var/log/syslog.

Esto no garantiza que las aplicaciones individuales hayan dejado alguna pista allí en caso de un problema. Pero ellos, o el shell, probablemente escupirán algo a los flujos de error estándar / estándar, y si ejecuta una aplicación problemática en primer plano desde un terminal, podrá ver esas cosas.

encerrada dorada
fuente
¿Qué se debe buscar /var/log? ¿Qué archivo de registro? ¿Hay alguna convención?
Jim
2
Si puede hacer que ocurra el bloqueo, hágalo, luego vea qué archivo en / var / log se modificó más recientemente. Con ls -lart, el último archivo en la lista fue el más recientemente cambiado.
Devon_C_Miller
Hay convenciones s : Linux es mucho más heterogéneo que Windows. Syslog se refiere al registrador del sistema, pero no existe una implementación universal, y las variaciones se pueden configurar de diferentes maneras. La lógica general es que los mensajes son enviados a syslog por la aplicación, y estos mensajes se ordenan en diferentes archivos. Como se mencionó, comúnmente todo termina /var/log/syslog, pero diferentes distribuciones hacen las cosas de manera diferente. Si sabe qué syslog está utilizando, puede examinar su configuración para determinar esto.
Ricitos
6

En Ubuntu se escriben segfaults en /var/log/kern.log. Lo probé creando un programa que segfaults:

void main() {
    int *a=0;
    *a=0;
}

Después de que se segfauló hubo esta línea en /var/log/kern.log:

a.out[534]: segfault at 0 ip 08048432 sp bfaec8c0 error 6 in a.out[8048000+1000]
sashoalm
fuente
1

En Ubuntu, si está iniciando su aplicación desde un archivo de inicio .desktop, agregue la opción Terminal=truea su archivo .desktop.

Selah
fuente