Estou tentando trabalhar com a inicialização do oprofile e estou com um problema nesta etapa:
opcontrol --vmlinux=/path/to/vmlinux
O Ubuntu não possui um pacote chamado vmlinux e, quando faço isso locate vmlinux
, recebo muitos arquivos:
/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
Qual desses é o que eu estou procurando?
vmlinuz
ele, requer um kernel descompactado.A maneira mais fácil (e não hacky) de obter
vmlinux
no Ubuntu é adicionar o repositório ddebs :e instale símbolos de depuração do kernel:
vmlinux
então pode ser encontrado aqui:fonte
Hum, só queria colocar isso como um comentário na resposta acima de @paxdiablo, mas não consegue encontrar o botão de comentário? Enfim..
O problema é que o
vmlinuz
arquivo está compactado - e, para fins de depuração, você precisa de um arquivo descompactadovmlinux
(e de preferência um construído com símbolos de depuração - que o padrãovmlinuz
-es que vem com o Ubuntu não possui, pois são despojados de símbolos).Agora, é possível descompactar a
vmlinuz
em umvmlinux
arquivo - no entanto, isso não é trivial; primeiro, você precisa encontrar um deslocamento de bytes no localvmlinuz
onde o arquivo compactado é iniciado e, em seguida, usardd
ezcat
descompactar apenas a parte necessária. Em detalhes, isso é explicado em: " [ubuntu] Como rastrear esse bug? - Ubuntu Forums - post # 4 "; em resumo, abaixo está o meu exemplo de log de comando do terminal, com base nesse post:Bem, espero que isso ajude,
Felicidades!
fonte
extract-vmlinux
: git.kernel.org/?p=linux/kernel/git/torvalds/…você pode baixar o código-fonte e compilar o seu usando o seguinte comando:
ou você pode baixar o pacote ddeb aqui e instalá-lo
sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb
fonte
Esta é uma pergunta antiga, e as respostas antigas não funcionam mais para mim (ubuntu 14.04).
Antes de tudo,
vmlinux
é opcionaloprofile
, você só precisa mostrar o que está acontecendo dentro do kernel; a criação de perfil no espaço do usuário pode ser feita sem ele. Leia mais no documento .Se você ainda precisar
vmlinux
, adicione o repositório ddebs (descaradamente retirado do wiki do ubuntu ):Em seguida, instale símbolos de depuração no seu kernel . Você deve fazer isso sempre que atualizar seu kernel, após a reinicialização, para
uname
obter a versão correta do kernel. Sinta-se livre para remover pacotes associados a kernels antigos.Após a instalação deste pacote, você encontrará o
vmlinux
arquivo aqui :fonte
Veja https://bugs.launchpad.net/ubuntu/+source/linux/+bug/289087
fonte
Pacotes que contêm o kernel do Linux (o arquivo vmlinuz) são chamados linux-image-VERSION-ARCH no Debian / Ubuntu.
Você pode listá-los com o comando
dpkg -l linux-image-*
e, para o pacote instalado (ele possui umaii
marca na primeira coluna), é possível obter uma lista de arquivosdpkg -L linux-image-VERSION-ARCH
, por exemplo,dpkg -L linux-image-2.6.31-17-386
para uma instalação recente do Karmic.Observe que
l
está em minúscula no primeiro comando e em maiúscula no segundo.fonte
Tente o seguinte comando:
normalmente o vmlinux localiza em / usr / lib / debug / após a instalação
fonte
deve estar na sua raiz (/). No ubuntu 8.10, é um link apontando para /boot/vmlinuz-2.6.28-16-generic
faça um
você deveria encontrar
PS: não tenho certeza do nome exato do caminho.
fonte