Quando un'applicazione si arresta in modo anomalo senza generare un errore, c'è un registro che posso controllare?


17

A volte capita che qualche crash dell'applicazione senza dare alcun errore di output ( conky nel mio caso, probabilmente è una delle mie configurazioni che non è corretta).

Esiste da qualche parte un registro degli errori che posso verificare per capire perché si è bloccato?

Risposte:


14

Dipende dall'applicazione. Applicazioni diverse hanno sistemi di registrazione diversi; non esiste un registro centrale che contenga tutto l'output di tutti i programmi in esecuzione sul sistema.

Detto questo, molti programmi inseriscono i loro file di registro nella directory /var/log. Il file /var/log/syslog(o forse /var/log/messages), in particolare, contiene l'output del "logger di sistema", che è un servizio reso disponibile dal sistema che i programmi possono usare (se lo desiderano) per la registrazione. Ma non tutti i programmi lo usano. Principalmente, in quel file troverai i messaggi dei servizi di sistema di basso livello, non le applicazioni grafiche che probabilmente usi normalmente.

Potresti voler leggere di più sulle posizioni dei file di registro standard .


6

i file di crash vanno in /var/log/crashes/uso con apport per segnalare bug. Puoi estrarre un core dump con apport-unpack, inserire quel dump principale tramite gdb e scoprire cosa sta causando il crash del programma.

Tutto questo presuppone che tu sia un programmatore. Se non lo sei ... beh, non puoi comunque risolvere il crash!


1
"Tutto questo presuppone che tu sia un programmatore. Se non lo sei ... beh, non puoi comunque risolvere il crash!" con open-source tutti possiamo provare a risolvere i nostri problemi, ovviamente a nostro rischio;)
Strae

@DaNiel: Non proprio! Se non sei un programmatore e non hai una buona conoscenza del codice delle applicazioni, più avrai problemi con il codice con cui probabilmente il buggier otterrà :)
AntonioCS

1
Anche se non sei un programmatore a volte alla ricerca di un core dump può darti un'idea del problema. Ad esempio, sembra che si blocchi in una sorta di routine grafica - forse dovrei aggiornare il mio driver di visualizzazione ...
user1242

2
..e aiuta a descrivere gli errori nelle segnalazioni / forum di bug;)
Strae

1
Conosci non programmatori che possono usare gdb? Sono un programmatore e posso arrivare fino a bt full"oh guarda un backtrace ... con simboli mancanti ... suppongo che devo installare i simboli di debug e provare a riprodurre il crash ..." Una volta ho capito come impostare un punto di interruzione ... questo è il più avanzato che ho ottenuto con esso però.
maco,

3

Per conky potrebbe anche essere che ci siano voci in $HOME/.xsession-errors.


2

Alcune applicazioni hanno flag che possono essere usati per attivare il debug, come -d, -D, --debug, ecc. Controlla la pagina man dell'applicazione ( man [my-app]) o esegui l'app con il flag -h per vedere se ha un tale opzione.

Molte app della GUI scrivono in $ HOME / .xsession-errori quindi è un buon posto per controllare l'output.

maco ha ragione sul fatto che apport è probabilmente il modo più sicuro per ottenere buone informazioni di debug. A volte, tuttavia, non cattura lo schianto.

Se tutto il resto fallisce, puoi anche forzare le informazioni fuori di esso eseguendo l'app in gdb. Sarebbe qualcosa del tipo:

$ gdb my-app

(gdb) run

... fai tutto il necessario per farlo precipitare ...

(gdb) bt full

e vai da lì.

Se segui il percorso gdb, dovrai anche installare i simboli, come menzionato in precedenza. Vedi https://wiki.ubuntu.com/DebuggingProgramCrash per consigli sulla gestione.


La migliore risposta per me senza dubbio
Claudix,

1

puoi andare /var/log/messages or crashesquindi puoi eseguire il grepcomando su quelli e cercare l'applicazione che a volte cerchi i file possono diventare piuttosto grandi. Restituirà informazioni pertinenti alla tua applicazione. :)


1

Se si avvia l'applicazione da un file di avvio .desktop, aggiungere l'opzione Terminal=trueal file .desktop. Questo aprirà un terminale quando esegui il programma, l'output sul terminale sarà simile a quello che vedresti se avessi eseguito il programma tramite la riga di comando in primo luogo. In questo modo, quando la GUI si arresta in modo anomalo o si blocca, puoi vedere quale output di testo ha portato ad esso.


Cosa fa questo? Ho già questo set e non sta registrando nulla in più.
Matt

Ho provato a rispondere alla tua domanda modificando la mia risposta. Questo ha senso?
Selah,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.