Próbuję pracować z uruchamianiem oprofilu i napotykam problem na tym etapie:
opcontrol --vmlinux=/path/to/vmlinux
Ubuntu nie ma pakietu o nazwie vmlinux, a kiedy to zrobię locate vmlinux
, otrzymuję wiele plików:
/usr/src/linux-headers-2.6.28-14/arch/h8300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-14/arch/m68k/kernel/vmlinux-std.lds
/usr/src/linux-headers-2.6.28-14/arch/m68k/kernel/vmlinux-sun3.lds
/usr/src/linux-headers-2.6.28-14/arch/mn10300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-14/arch/sh/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-14/arch/x86/boot/compressed/vmlinux_32.lds
/usr/src/linux-headers-2.6.28-14/arch/x86/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-14/include/asm-generic/vmlinux.lds.h
/usr/src/linux-headers-2.6.28-15/arch/h8300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-15/arch/m68k/kernel/vmlinux-std.lds
/usr/src/linux-headers-2.6.28-15/arch/m68k/kernel/vmlinux-sun3.lds
/usr/src/linux-headers-2.6.28-15/arch/mn10300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-15/arch/sh/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-15/arch/x86/boot/compressed/vmlinux_32.lds
/usr/src/linux-headers-2.6.28-15/arch/x86/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-15/include/asm-generic/vmlinux.lds.h
/usr/src/linux-headers-2.6.28-16/arch/h8300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-16/arch/m68k/kernel/vmlinux-std.lds
/usr/src/linux-headers-2.6.28-16/arch/m68k/kernel/vmlinux-sun3.lds
/usr/src/linux-headers-2.6.28-16/arch/mn10300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-16/arch/sh/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-16/arch/x86/boot/compressed/vmlinux_32.lds
/usr/src/linux-headers-2.6.28-16/arch/x86/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-16/include/asm-generic/vmlinux.lds.h
Który z nich jest tym, którego szukam?
vmlinuz
nim współpracować wymaga nieskompresowanego jądra.Najłatwiejszym (i nie zhackowanym) sposobem uzyskania
vmlinux
w Ubuntu jest dodanie repozytorium ddebs :i zainstaluj symbole debugowania jądra:
vmlinux
to można znaleźć tutaj:źródło
Hm, chciałem umieścić to jako komentarz do powyższej odpowiedzi @paxdiablo, ale nie możesz znaleźć przycisku komentarza? W każdym razie ..
Chodzi o to, że
vmlinuz
plik jest skompresowany - i do celów debugowania potrzebny jest nieskompresowanyvmlinux
(a najlepiej zbudowany z symboli debugowania), który jest domyślnievmlinuz
-es dostarczany z Ubuntu, ponieważ są one pozbawione symboli).Teraz można rozpakować plik
vmlinuz
dovmlinux
pliku - nie jest to jednak trywialne; najpierw musisz znaleźć bajtowe przesunięcie wvmlinuz
miejscu, w którym zaczyna się skompresowany plik, a następnie użyjdd
izcat
rozpakuj tylko niezbędną część. Szczegółowo wyjaśniono to w: „ [ubuntu] Jak prześledzić ten błąd? - Forum Ubuntu - post # 4 ”; w skrócie, poniżej znajduje się mój przykładowy dziennik poleceń terminalu, oparty na tym poście:Mam nadzieję, że to pomaga,
Twoje zdrowie!
źródło
extract-vmlinux
: git.kernel.org/?p=linux/kernel/git/torvalds/…możesz pobrać źródło i skompilować własne za pomocą następującego polecenia:
lub możesz pobrać pakiet ddeb tutaj i zainstalować go
sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb
źródło
To stare pytanie i stare odpowiedzi już mi nie działają (ubuntu 14.04).
Przede wszystkim
vmlinux
jest opcjonalnyoprofile
, wystarczy tylko pokazać, co dzieje się w jądrze, bez niego można profilować przestrzeń użytkownika. Przeczytaj więcej w dokumencie .Jeśli nadal potrzebujesz
vmlinux
, dodaj repozytorium ddebs (bezwstydnie pobrane z wiki ubuntu ):Następnie zainstaluj symbole debugowania dla jądra . Musisz to zrobić przy każdej aktualizacji jądra, po ponownym uruchomieniu, aby uzyskać
uname
odpowiednią wersję jądra. Możesz usunąć pakiety związane ze starymi jądrami.Po zainstalowaniu tego pakietu plik znajdziesz
vmlinux
tutaj :źródło
Zobacz https://bugs.launchpad.net/ubuntu/+source/linux/+bug/289087
źródło
Pakiety zawierające jądro Linuksa (plik vmlinuz) nazywa się linux-image-VERSION-ARCH w Debian / Ubuntu.
Możesz je wyświetlić za pomocą polecenia
dpkg -l linux-image-*
, a dla zainstalowanego pakietu (maii
znak w pierwszej kolumnie) możesz uzyskać listę plików za pomocądpkg -L linux-image-VERSION-ARCH
, np.dpkg -L linux-image-2.6.31-17-386
dla ostatniej instalacji Karmic.Zwróć uwagę, że
l
małe litery w pierwszym poleceniu i wielkie litery w drugim.źródło
Spróbuj wykonać następujące polecenie:
zwykle vmlinux lokalizuje się w / usr / lib / debug / po instalacji
źródło
powinno być w twoim katalogu głównym (/). W Ubuntu 8.10 jest to link prowadzący do /boot/vmlinuz-2.6.28-16-generic
zrobić
powinieneś to znaleźć
PS: nie jestem pewien dokładnej nazwy ścieżki.
źródło