Como instalar símbolos de depuração para pacotes instalados?


8

Eu tento observar como os programas funcionam, executando-os pelo depurador 'Qt Creator'. Para uma melhor orientação, eu gostaria de ver também os utilitários do sistema (núcleo) totalmente na janela da pilha de chamadas, como eu sou usado no MS Visual Studio 6.0, não apenas para ver o código de montagem. Para os utilitários, o depurador 'Qt Creator' exibe apenas que seus símbolos de depuração não estão disponíveis. (Às vezes, o sistema gera relatórios de erros para seus desenvolvedores; a caixa de diálogo de relatório de erros solicitou a instalação desses símbolos apenas para um programa específico.) Como posso obter os principais símbolos de depuração? (Sem traduzir a versão completa do Ubuntu. Eu uso o 'Update Manager' para instalar as atualizações regularmente.

/ sys / kernel / debug / x86
O diretório contém apenas um arquivo vazio. Eu não o encontrei no 'centro de software Ubuntu' nem vejo se alguns dos pacotes no http://packages.ubuntu.com/precise/x11/ são o que eu procuro.) Obrigado!


1
Veja esta página.
saiarcot895

@ saiarcot895 Funciona, faça o seu comentário como resposta para que eu possa defini-lo como aceito. Onde estão os símbolos de depuração no meu sistema de arquivos? Obrigado!
Tomáš Pečený

Respostas:


8

Os pacotes no Ubuntu têm seus símbolos de depuração armazenados em um repositório separado. Para baixar esses símbolos de depuração, execute (copie e cole):

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

para adicionar os links do repositório /etc/apt/sources.list.d/ddebs.list(Isso facilita a remoção do repositório). Como alternativa, você também pode copiar cada um dos deblinks para fontes de software e adicioná-los a partir daí (observe que você provavelmente precisará substituir $(lsb_release -cs)pela versão do Ubuntu que está executando).

Para baixar os símbolos de depuração package, basta instalar package-dbgsymou, em alguns casos package-dbg,. Observe que os pacotes de um PPA não têm símbolos de depuração disponíveis nos repositórios e que é responsabilidade do mantenedor fornecer um pacote que contenha os símbolos de depuração, geralmente em um pacote nomeado package-dbg.

Os símbolos de depuração estão instalados /usr/lib/debug, apesar de gdbler automaticamente os símbolos de depuração, se disponíveis, e você não precisa especificar manualmente um local para procurar. Dependendo da versão do pacote Debhelper Compatibility, os símbolos de depuração podem estar localizados em uma pasta com o nome do ID da compilação localizado em .build-id( >= 9) ou pode estar localizado em relação ao local onde o executável seria instalado ( < 9). Por exemplo, se você estivesse olhando para a localização dos símbolos de depuração para /usr/bin/zip, ea versão é inferior a 9, que seria no /usr/lib/debug/usr/bin/zip.

Para remover todos os símbolos de depuração e o repositório, execute sudo apt-get remove \.*-dbgsympara remover todos os -dbgsympacotes e sudo rm /etc/apt/sources.list.d/ddebs.listremova o repositório de símbolos de depuração.


5
Apenas observe que os PPAs agora geram pacotes dbgsym. Mas você precisa adicionar uma linha deb com o "main / debug", como: "deb ppa.launchpad.net/USER/PPA/ubuntu vívida / main debug"
Michael Terry

A partir de biônico, os ddebs repo não tem um arquivo de lançamento de Bionic-segurança
Paulo Marcel Coelho Aragão

5

Adicionando à resposta de saircot859. Você também precisa instalar a chave GPG para os repositórios, conforme descrito aqui: https://wiki.ubuntu.com/Debug%20Symbol%20Packages

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

A página wiki vinculada foi atualizada. No Ubuntu 18.04 LTS e mais recente, use sudo apt install ubuntu-dbgsym-keyring.
user7610

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.