Pagina 1 di 1

Pacchetti Kde 4.2 in current: impossibile generare backtrace

Inviato: dom 8 feb 2009, 14:57
da proffi
Ciao, come molte persone sul forum sto usando kde 4.2 su Slackware 12.2, è veramente un bel DE ma ancora non esente da difetti. Ho trovato qualche problemino qua e là, inoltre mi sono capitati un paio di crash di plasma e konqueror.
Ogni volta che avviene un crash, kde cerca di generare un backtrace, ma non ci riesce mai perché non trova i simboli di debug. Immagino che questo avvenga perché gli slackbuild usano strip per eliminare i simboli.
Ora, dato che i pacchetti di Kde 4.2 sono in /testing, penso che sarebbe utile per tutti gli utenti, non solo di Slackware ma anche di kde, poter vedere un backtrace completo per segnalare eventualmente un bug. A parte una riduzione delle dimensioni degli eseguibili, passare tutto con strip che vantaggi dà? Penso che, se kde 4.2 è in testing, sarebbe utile poterlo testare a fondo e avere i simboli di debug, quindi evitare di usare strip, o quantomeno evitare che tocchi i simboli di debug.
Cosa ne pensate? Lo si potrebbe far presente a Pat & C?

PS: se qualcuno sul forum ha provato a compilare kde da solo, qual è circa la differenza in dimensione tra file strippati e non? Perché se è troppo grande distribuire eseguibili con simboli di debug inclusi non sarebbe fattibile...

Re: Pacchetti Kde 4.2 in current: impossibile generare backtrace

Inviato: mar 10 feb 2009, 9:41
da ildiama
L'argomento è un pò complicato..

Prima di tutto Pat non ha mai rilasciato pacchetti per il debug o pacchetti con binari contenenti i simboli di debug. Nel suo modo di pensare credo lui intenda che se tu vuoi, fai da solo. In fondo ti fornisce anche lo slackbuild..

La differenza tra un binario strippato e uno no si sente eccome.. incollo qui un ls -l delle mie compilazioni..

Codice: Seleziona tutto

root> ls /opt/kde/bin/ -l
-rwxr-xr-x 1 root root   101804 2009-02-06 12:00 akonadi_distlist_resource
-rw-r--r-- 1 root root   847299 2009-02-06 12:00 akonadi_distlist_resource.debug
-rwxr-xr-x 1 root root    89628 2009-02-06 12:00 akonadi_ical_resource          
-rw-r--r-- 1 root root   816740 2009-02-06 12:00 akonadi_ical_resource.debug    
-rwxr-xr-x 1 root root   118196 2009-02-06 12:00 akonadi_imaplib_resource       
-rw-r--r-- 1 root root   856299 2009-02-06 12:00 akonadi_imaplib_resource.debug 
-rwxr-xr-x 1 root root   101672 2009-02-06 12:00 akonadi_kabc_resource          
-rw-r--r-- 1 root root   482313 2009-02-06 12:00 akonadi_kabc_resource.debug    
-rwxr-xr-x 1 root root    93208 2009-02-06 12:00 akonadi_kcal_resource          
i pacchetti .debug sono quelli che contengono i simboli. Ma sono un pò strippati anche quelli. Per farsi una semplice idea, potremmo dire che un pacchetto strippato è un decimo di un pacchetto non strippato.

Come si vede, la soluzione al problema consiste nel separare il file binario dai suoi simboli di debug e collegarli fra loro in qualche modo. Questo comporta che in fase di utilizzo hai i vantaggi di un pacchetto soft (piccolo, veloce, .. ) e in caso di crash i simboli vengono recuperati dal file .debug. Quest'ultima operazione sembra un pò più lenta, ma.. chissenefrega :lol: !! Sperando che il sw crashi poco.

Per ottenere una cosa come la mia, bisogna fare così (sostituendo il codice di Pat):

Codice: Seleziona tutto

# ----- executables
for exe in $( find . -type f -name '*' | xargs file | grep "executable" | grep ELF | cut -f 1 -d : )
do
    objcopy --only-keep-debug $exe $exe.debug
    chmod 644 $exe.debug
    strip --strip-unneeded $exe
    objcopy --add-gnu-debuglink=$exe.debug $exe
done

# ----- shared libs
for shared in $( find . -type f -name '*' | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : )
do
    objcopy --only-keep-debug $shared $shared.debug
    chmod 644 $shared.debug
    strip --strip-unneeded $shared
    objcopy --add-gnu-debuglink=$shared.debug $shared
done

Ovviamente lo script si potrebbe migliorare. Ma così funziona. Inoltre exe e shared libs mi piacciono separati perché prima utilizzavo una diversa opzione di strip fra i due.

Codice: Seleziona tutto

$ man strip
Spero di essere stato utile, ciao.

Re: Pacchetti Kde 4.2 in current: impossibile generare backtrace

Inviato: ven 13 feb 2009, 12:39
da proffi
Ciao, grazie sei stato chiarissimo. Poi non sapevo della possibilità di separe gli eseguibili dai simboli di debug.
Se avrò tempo e voglia di compilare kde (ehm... sarà dura :D ) ci proverò, comunque è interessante questa cosa.
Mi era venuto in mente solo perché volevo capire qual era la causa dei crash...almeno uno al giorno me ne capitano. Effettivamente però è improponibile distribuire pacchetti non strippati se la differenza in dimensioni è così grande...
Ciao