Я пытаюсь поработать с запуском oprofile , и на этом этапе я столкнулся с проблемой:
opcontrol --vmlinux=/path/to/vmlinux
У Ubuntu нет пакета с именем vmlinux, и когда я делаю a locate vmlinux
, я получаю много файлов:
/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
Кого из них я ищу?
vmlinuz
ним, требует несжатого ядра.Самый простой (и не хакерский) способ получить
vmlinux
под Ubuntu - это добавить репозиторий ddebs :и установите символы отладки ядра:
vmlinux
тогда можно найти здесь:источник
Хм, просто хотел поместить это как комментарий к ответу выше по @paxdiablo, но не можете найти кнопку комментария? В любом случае ..
Дело в том, что
vmlinuz
файл сжат - и для целей отладки вам нужен несжатыйvmlinux
(и желательно тот, которыйvmlinuz
собран с отладочными символами - которых нет у стандартных по умолчанию в Ubuntu, поскольку они лишены символов).Теперь можно распаковать файл
vmlinuz
вvmlinux
файл - однако это не тривиально; сначала нужно найти смещение в байтах, вvmlinuz
котором начинается сжатый файл, а затем использоватьdd
иzcat
для распаковки только необходимой части. Подробно это объясняется в: « [ubuntu] Как отследить эту ошибку? - Форумы Ubuntu - пост № 4 »; вкратце, ниже приведен пример журнала команд терминала, основанный на этом посте:Ну, надеюсь, это поможет,
Ура!
источник
extract-vmlinux
: git.kernel.org/?p=linux/kernel/git/torvalds/…Вы можете скачать исходный код и скомпилировать свой собственный, используя следующую команду:
или вы можете скачать пакет ddeb здесь и установить его
sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb
источник
Это старый вопрос, и старые ответы у меня больше не работают (Ubuntu 14.04).
Прежде всего,
vmlinux
это необязательноoprofile
, вам нужно только показать, что происходит внутри ядра, профилирование пользовательского пространства может быть выполнено без него. Подробнее читайте в док .Если вам все еще нужно
vmlinux
, добавьте репозиторий ddebs (бесстыдно взятый из вики Ubuntu ):Затем установите символы отладки для вашего ядра . Вы должны делать это каждый раз, когда вы обновляете свое ядро, после перезагрузки, чтобы
uname
получить правильную версию ядра. Не стесняйтесь удалять пакеты, связанные со старыми ядрами.Как только этот пакет будет установлен, вы найдете
vmlinux
файл здесь :источник
См. Https://bugs.launchpad.net/ubuntu/+source/linux/+bug/289087.
источник
Пакеты, содержащие ядро linux (файл vmlinuz), называются linux-image-VERSION-ARCH в Debian / Ubuntu.
Вы можете перечислить их с помощью команды
dpkg -l linux-image-*
, а для установленного пакета (онii
отмечен в первом столбце) вы можете получить список файлов в немdpkg -L linux-image-VERSION-ARCH
, например,dpkg -L linux-image-2.6.31-17-386
для недавней установки Karmic.Обратите внимание, что
l
строчные буквы в первой команде и прописные буквы во второй.источник
Попробуйте следующую команду:
обычно vmlinux находится в / usr / lib / debug / после установки
источник
это должно быть в вашем корне (/). В Ubuntu 8.10 это ссылка, указывающая на /boot/vmlinuz-2.6.28-16-generic
сделать
ты должен найти это
PS: не уверен в точном имени пути.
источник