Ich versuche, mit dem Starten von oprofile zu arbeiten , und in diesem Schritt tritt ein Problem auf:
opcontrol --vmlinux=/path/to/vmlinux
Ubuntu hat kein Paket namens vmlinux, und wenn ich a mache locate vmlinux
, bekomme ich viele Dateien:
/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
Welches davon suche ich?
vmlinuz
und benötigt einen unkomprimierten Kernel.Der einfachste (und nicht hackige) Weg, um
vmlinux
unter Ubuntu zu erhalten, ist das Hinzufügen eines ddebs-Repositorys :und installiere Kernel Debug Symbole:
vmlinux
dann finden Sie hier:quelle
Hm, wollte dies nur als Kommentar zu der obigen Antwort von @paxdiablo setzen, kann aber den Kommentar-Button nicht finden? Sowieso..
Die Sache ist, dass die
vmlinuz
Datei komprimiert ist - und für Debugging-Zwecke benötigen Sie eine unkomprimiertevmlinux
(und vorzugsweise eine mit Debugging-vmlinuz
Symbolen erstellte).Jetzt ist es möglich, ein
vmlinuz
in einevmlinux
Datei zu entpacken - das ist jedoch nicht trivial; Zuerst müssen Sie einen Byte-Offset finden, invmlinuz
dem die komprimierte Datei beginnt, und dann nur den erforderlichen Teil mitdd
undzcat
entpacken. Im Detail wird dies erklärt in: " [ubuntu] Wie kann man diesen Fehler verfolgen? - Ubuntu Forums - post # 4 "; Kurz gesagt, unten ist mein Beispiel für ein Terminalbefehlsprotokoll, das auf diesem Beitrag basiert:Nun, ich hoffe, das hilft,
Prost!
quelle
extract-vmlinux
: git.kernel.org/?p=linux/kernel/git/torvalds/…Mit dem folgenden Befehl können Sie den Quellcode herunterladen und Ihren eigenen kompilieren:
oder Sie können das ddeb-Paket hier herunterladen und installieren
sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb
quelle
Dies ist eine alte Frage, und alte Antworten funktionieren für mich nicht mehr (Ubuntu 14.04).
Zuallererst
vmlinux
ist es optional füroprofile
, Sie brauchen es nur, um zu zeigen, was im Kernel passiert. User-Space-Profiling kann ohne es durchgeführt werden. Lesen Sie mehr in der Dokumentation .Wenn Sie immer noch brauchen
vmlinux
, fügen Sie das Ddebs-Repository hinzu (schamlos aus Ubuntus Wiki entnommen ):Dann Debug - Symbole für Ihren Kernel installieren . Sie müssen dies jedes Mal tun, wenn Sie Ihren Kernel aktualisieren, nachdem Sie neu gestartet haben, damit
uname
die richtige Kernel-Version erhalten wird. Fühlen Sie sich frei, Pakete zu entfernen, die mit alten Kerneln verbunden sind.Sobald dieses Paket installiert ist, finden Sie die
vmlinux
Datei hier :quelle
Siehe https://bugs.launchpad.net/ubuntu/+source/linux/+bug/289087
quelle
Pakete, die den Linux-Kernel (die vmlinuz-Datei) enthalten, heißen in Debian / Ubuntu linux-image-VERSION-ARCH.
Sie können sie mit dem Befehl
dpkg -l linux-image-*
auflisten und für das installierte Paket (es istii
in der ersten Spalte markiert) können Sie eine Liste der darin enthaltenen Dateien abrufendpkg -L linux-image-VERSION-ARCH
, z. B.dpkg -L linux-image-2.6.31-17-386
für eine kürzliche Karmic-Installation.Beachten Sie, dass
l
im ersten Befehl Kleinbuchstaben und im zweiten Großbuchstaben verwendet werden.quelle
Versuchen Sie den folgenden Befehl:
Normalerweise befindet sich das vmlinux nach der Installation in / usr / lib / debug /
quelle
Es sollte sich in Ihrer Wurzel (/) befinden. In Ubuntu 8.10 ist es ein Link, der auf /boot/vmlinuz-2.6.28-16-generic verweist
mach ein
du solltest es finden
PS: Ich weiß nicht genau, wie der Pfad heißt.
quelle