Come installare i simboli di debug per i pacchetti installati?


8

Provo a vedere come funzionano i programmi eseguendoli dal debugger "Qt Creator". Per un migliore orientamento, mi piacerebbe vedere anche le utility di sistema (core) nella finestra dello stack di chiamate mentre sono usato da MS Visual Studio 6.0, non solo per vedere il loro codice assembly. Per i programmi di utilità, il debugger "Qt Creator" mostra solo che i loro simboli di debug non sono disponibili. (A volte, il sistema genera segnalazioni di bug per i suoi sviluppatori; la finestra di dialogo di segnalazione bug ha richiesto l'installazione di tali simboli solo per un determinato programma.) Come posso ottenere i simboli di debug di base? (Senza tradurre l'intera versione di Ubuntu. Uso "Update Manager" per installare gli aggiornamenti regolarmente. Mio

/ Sys / kernel / debug / x86
la directory contiene solo un file vuoto. Non l'ho trovato nel 'Ubuntu software center' né vedo se alcuni dei pacchetti su http://packages.ubuntu.com/precise/x11/ sono ciò che cerco.) Grazie!


1
Vedi questa pagina
saiarcot895,

@ saiarcot895 Funziona, ti preghiamo di formulare il tuo commento come risposta in modo che io possa impostarlo come accettato. Dove sono collocati i simboli di debug nel mio filesystem? Grazie!
Tomáš Pečený,

Risposte:


8

I pacchetti in Ubuntu hanno i loro simboli di debug memorizzati in un repository separato. Per scaricare questi simboli di debug, esegui (copia e incolla):

printf "deb http://ddebs.ubuntu.com %s main restricted universe multiverse\n" $(lsb_release -cs){,-updates,-security,-proposed} | \
 sudo tee -a /etc/apt/sources.list.d/ddebs.list

per aggiungere i collegamenti ai repository in /etc/apt/sources.list.d/ddebs.list(Ciò semplifica la rimozione del repository). In alternativa, puoi anche copiare ciascuno dei debcollegamenti in Sorgenti software e aggiungerli da lì (tieni presente che probabilmente dovrai sostituirlo $(lsb_release -cs)con la versione di Ubuntu che stai eseguendo).

Per scaricare i simboli di debug per package, si può semplicemente installare package-dbgsymo, in alcuni casi, package-dbg. Si noti che i pacchetti da un PPA non hanno simboli di debug disponibili dai repository e che è responsabilità del manutentore fornire un pacchetto che contenga i simboli di debug, di solito in un pacchetto denominato package-dbg.

I simboli di debug sono installati /usr/lib/debug, anche se gdbvengono letti automaticamente nei simboli di debug, se disponibili, e non è necessario specificare manualmente un percorso in cui cercare. A seconda della versione di compatibilità del debhelper del pacchetto, i simboli di debug possono trovarsi in una cartella con il nome dell'ID build che si trova all'interno di .build-id( >= 9) o che può trovarsi in relazione a dove verrebbe installato l'eseguibile ( < 9). Ad esempio, se stavi cercando la posizione dei simboli di debug per /usr/bin/zip, e la versione è inferiore a 9, sarebbe in /usr/lib/debug/usr/bin/zip.

Per rimuovere tutti i simboli di debug e il repository, eseguire sudo apt-get remove \.*-dbgsymper rimuovere tutti i -dbgsympacchetti e sudo rm /etc/apt/sources.list.d/ddebs.listrimuovere il repository dei simboli di debug.


5
Solo una nota che i PPA ora generano pacchetti dbgsym. Ma devi aggiungere una linea di deb con "main / debug", come: "deb ppa.launchpad.net/USER/PPA/ubuntu vivid main / debug"
Michael Terry,

A partire da bionic, il repository ddebs non ha un file di rilascio per bionic-security
Paulo Marcel Coelho Aragão,

5

Aggiungendo alla risposta di saircot859. Devi anche installare la chiave GPG per i repository come descritto qui: https://wiki.ubuntu.com/Debug%20Symbol%20Packages

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 C8CAB6595FDFF622

La pagina wiki collegata è stata aggiornata. Su Ubuntu 18.04 LTS e versioni successive, utilizzare sudo apt install ubuntu-dbgsym-keyring.
user7610

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.