Jak zainstalować symbole debugowania dla zainstalowanych pakietów?

8

Próbuję obserwować działanie programów, uruchamiając je za pomocą debugera „Qt Creator”. Dla lepszej orientacji chciałbym zobaczyć również narzędzia systemowe (podstawowe) w oknie stosu wywołań, ponieważ jestem używany w MS Visual Studio 6.0, nie tylko do wyświetlania ich kodu asemblera. W przypadku narzędzi debugger „Qt Creator” wyświetla tylko to, że ich symbole debugowania są niedostępne. (Czasami system generuje raporty o błędach dla swoich programistów; okno dialogowe raportu o błędzie poprosiło o zainstalowanie takich symboli tylko dla określonego programu.) Jak mogę uzyskać podstawowe symbole debugowania? (Bez tłumaczenia całej wersji Ubuntu. Używam „Menedżera aktualizacji” do regularnego instalowania aktualizacji. Mój

/ sys / kernel / debug / x86
katalog zawiera tylko jeden pusty plik. Nie znalazłem go w „Centrum oprogramowania Ubuntu” ani nie widzę, czy szukam niektórych pakietów na stronie http://packages.ubuntu.com/precise/x11/ .) Dzięki!

Tomáš Pečený
źródło
1
Zobacz stronę.
saiarcot895
@ saiarcot895 Działa, proszę sformułować swój komentarz jako odpowiedź, dzięki czemu mogę ustawić go jako zaakceptowany. Gdzie znajdują się symbole debugowania w moim systemie plików? Dzięki!
Tomáš Pečený

Odpowiedzi:

8

Pakiety w Ubuntu mają swoje symbole debugowania przechowywane w osobnym repozytorium. Aby pobrać te symbole debugowania, uruchom (skopiuj i wklej):

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

w celu dodania linków repozytorium /etc/apt/sources.list.d/ddebs.list(ułatwia to usunięcie repozytorium). Możesz też skopiować każdy z debłączy do źródeł oprogramowania i dodać je stamtąd (pamiętaj, że prawdopodobnie będziesz musiał zastąpić $(lsb_release -cs)je uruchomioną wersją Ubuntu).

Aby pobrać debugowanie symbole package, można po prostu zainstalować package-dbgsymlub, w niektórych przypadkach package-dbg. Należy pamiętać, że pakiety z PPA nie mają symboli debugowania dostępnych w repozytoriach i że obowiązkiem opiekuna jest zapewnienie pakietu zawierającego symbole debugowania, zwykle w pakiecie o nazwie package-dbg.

Symbole debugowania są zainstalowane /usr/lib/debug, chociaż gdbautomatycznie odczytuje symbole debugowania, jeśli są dostępne i nie trzeba ręcznie określać lokalizacji, w której należy zajrzeć. W zależności od wersji pakietu Debhelper Compatibility symbole debugowania mogą znajdować się w folderze z nazwa identyfikatora kompilacji znajdująca się wewnątrz .build-id( >= 9) lub może znajdować się względem miejsca, w którym zostanie zainstalowany plik wykonywalny ( < 9). Na przykład, jeśli szukałeś lokalizacji symboli debugowania dla /usr/bin/zip, a wersja ma mniej niż 9, byłaby w /usr/lib/debug/usr/bin/zip.

Aby usunąć wszystkie symbole debugowania i repozytorium, uruchom, sudo apt-get remove \.*-dbgsymaby usunąć wszystkie -dbgsympakiety, i sudo rm /etc/apt/sources.list.d/ddebs.listaby usunąć repozytorium symboli debugowania.

saiarcot895
źródło
5
Uwaga: PPA generują teraz pakiety dbgsym. Ale musisz dodać linię deb z „main / debug”, na przykład: „deb ppa.launchpad.net/USER/PPA/ubuntu vivid main / debug”
Michael Terry
W wersji bionic w repozytorium ddebs nie ma pliku Release dotyczącego bezpieczeństwa bionic
Paulo Marcel Coelho Aragão
5

Dodanie do odpowiedzi saircot859. Musisz także zainstalować klucz GPG dla repozytoriów, jak opisano tutaj: https://wiki.ubuntu.com/Debug%20Symbol%20Packages

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 C8CAB6595FDFF622
Evan
źródło
Połączona strona wiki została zaktualizowana. W systemie Ubuntu 18.04 LTS i nowszych używaj sudo apt install ubuntu-dbgsym-keyring.
user7610