Cuando una aplicación se bloquea sin generar un error, ¿hay algún registro que pueda verificar?

17

A veces sucede que algunas aplicaciones se bloquean sin dar ningún error de salida ( conky en mi caso, probablemente es una de mis configuraciones incorrectas).

¿Hay algún lugar en el registro de errores que pueda verificar para entender por qué está bloqueado?

Strae
fuente

Respuestas:

14

Depende de la aplicación. Las diferentes aplicaciones tienen diferentes sistemas de registro; No hay un registro central que contenga todos los resultados de todos los programas que se ejecutan en su sistema.

Dicho esto, muchos programas ponen sus archivos de registro en el directorio /var/log. El archivo /var/log/syslog(o tal vez /var/log/messages), en particular, contiene la salida del "registrador del sistema", que es un servicio puesto a disposición por el sistema que los programas pueden usar (si así lo desean) para el registro. Pero no todos los programas lo usan. En su mayoría, encontrará mensajes de servicios de sistema de bajo nivel en ese archivo, no las aplicaciones gráficas que probablemente usa normalmente.

Es posible que desee leer más sobre las ubicaciones de los archivos de registro estándar .

David Z
fuente
6

los archivos /var/log/crashes/bloqueados se utilizan para apport para informar errores. Puede extraer un volcado de núcleo con apport-unpack, poner ese volcado de núcleo a través de gdb y descubrir qué está causando el bloqueo del programa.

Todo esto supone que eres un programador. Si no estás ... bueno, ¡no puedes arreglar el bloqueo de todos modos!

maco
fuente
1
"Todo esto supone que eres un programador. Si no estás ... bueno, ¡no puedes arreglar el bloqueo de todos modos!" con código abierto, todos podemos tratar de resolver nuestros problemas, obviamente bajo nuestro propio riesgo;)
Strae
@DaNiel: ¡No realmente! Si usted no es un programador y no tiene una buena comprensión del código de las aplicaciones, más que meterse con el código de la buggier con, probablemente obtendrá :)
AntonioCS
1
Incluso si no eres un programador, a veces buscar un volcado de núcleo puede darte una idea sobre el problema. Por ejemplo, parece que está fallando en algún tipo de rutina gráfica, tal vez debería actualizar mi controlador de pantalla ...
user1242
2
..y ayuda a describir los errores en los informes de errores / foros;)
Strae
1
¿Conoces a los no programadores que pueden usar gdb? Soy programador y puedo llegar hasta bt full"oh, mira hacia atrás ... con símbolos faltantes ... supongo que necesito instalar símbolos de depuración e intentar reproducir el bloqueo ..." Una vez descubrí cómo configurar un punto de interrupción ... eso es lo más avanzado que he conseguido con eso.
maco
3

Para conky también podría ser que haya entradas en $HOME/.xsession-errors.

qbi
fuente
2

Algunas aplicaciones tienen indicadores que se pueden usar para activar la depuración, como -d, -D, --debug, etc. Verifique la página de manual de la aplicación ( man [my-app]) o ejecute la aplicación con el indicador -h para ver si tiene opción.

Muchas aplicaciones GUI escriben en $ HOME / .xsession-errors, por lo que es un buen lugar para verificar la salida.

Maco tiene razón en que apport es probablemente la forma más segura de obtener buena información de depuración. Sin embargo, a veces no captura el choque.

Si todo lo demás falla, también puede forzar la información al ejecutar la aplicación en gdb. Sería algo así como:

$ gdb my-app

(gdb) run

... haz lo que sea necesario para que se bloquee ...

(gdb) bt full

e ir desde allí.

Si va por la ruta gdb, también querrá instalar símbolos, como se mencionó anteriormente. Consulte https://wiki.ubuntu.com/DebuggingProgramCrash para obtener consejos sobre la retención.

Bryce
fuente
La mejor respuesta para mí sin duda
Claudix
1

puede ir a /var/log/messages or crashescontinuación, puede ejecutar el grepcomando en ellos y buscar la aplicación que busca los archivos puede ser bastante grande a veces. Le devolverá información relevante para su solicitud. :)

myusuf3
fuente
1

Si está iniciando su aplicación desde un archivo de inicio .desktop, agregue la opción Terminal=truea su archivo .desktop. Esto abrirá una terminal cuando ejecutes el programa, la salida en la terminal será similar a lo que verías si hubieras ejecutado el programa a través de la línea de comando en primer lugar. De esta manera, cuando la GUI se bloquea o se cuelga, puede ver qué salida de texto le estaba llevando.

Selah
fuente
¿Qué hace esto? Ya tengo este conjunto y no está registrando nada extra.
Matt
Intenté responder a tu pregunta editando mi respuesta. ¿Tiene esto sentido?
Selah