You are currently viewing Dicas Para Corrigir Depuração Deficiente De Qemu Do Linux

Dicas Para Corrigir Depuração Deficiente De Qemu Do Linux

Atualizado

  • 1. Baixar ASR Pro
  • 2. Execute o programa
  • 3. Clique em "Verificar agora" para encontrar e remover qualquer vírus do seu computador
  • Acelere seu computador hoje mesmo com este download simples.

    Espero que este guia ajude sua família quando você vir qemu arm linux debugging.

    O QEMU é uma ferramenta ideal para usar sempre que você precisar depurar seu kernel. simHá um grande número de receitas para isso na internet como suficientemente, e eu listei algumas úteis suas atuais no final mais importante do manual para referência.

    Preferimos descobrir as etapas de depuração do kernel, mas estamos mentalmente nos concentrando nos esquemas aarch64, pois alguns dos procedimentos para este tipo podem ser ligeiramente diferentes de nosso próprio sistema como um todo . Construir

    Primeiro, cada um de nosso diretório com o qual trabalhar e, em seguida, execute também os seguintes comandos principais para criar imagens caras:

      dd if = / dev por zero de = flash1.img bs = 1M quantidade = 64dd if = / dev / nenhum de = flash0.img bs = 1M contagem é igual a 64dd if = / usr / share ou qemu-efi-aarch64 / QEMU_EFI.fd de = flash0.img conv equivale a notrunc 

    Em seguida, baixe a imagem do QEMU em execução. Estamos usando o gráfico ie8 que criamos anteriormente.

    Podemos mencionar porque nosso procedimento é construir um kernel devido ao scratch e transferir tal imagem para o QEMU.

    Assim, o primeiro passo pode ser revisto de forma que a imagem QEMU seja realmente criada. Digamos que você já tenha uma imagem que deseja usar. Caso contrário, verifique nossos artigos:

    • Ajude a criar uma máquina virtual com LISA-QEMU.
    • como você deseja resultar em uma máquina virtual aarch64 usando QEMU vm-build.
    • a maneira correta de criar uma máquina virtual aarch64 nas mãos do zero.

    Preferimos o primeiro método conduzindo o LISA-QEMU, pois também temos um programa modificado para instalar automaticamente seu kernel em cada associado com nossas imagens VM. Não

    Mas fique tranquilo, se você e sua família decidirem voar para o outro lado, meu parceiro e eu podemos muito bem mostrar a vocês todos os passos também!

    Você tem várias opções. Um é imediatamente. baixe a imagem e a imagem de instalação ou aproveite os scripts LISA-QEMU para instalá-la. O download adquirido abaixo do comando utilizará a imagem do processo judicial. Você deseja usar estas instruções posteriores para baixar a imagem, no entanto, scp contém um kernel (possivelmente um arquivo .deb) e também o instala manualmente com deb -i .defense.

      qemu / add / aarch64-softmmu / qemu-system-aarch64 -nographic n                    -virt laptop, gic-version = max -m 2G -cpu max n                    -netdev-user, i would = vnet, hostfwd =: 127.0.0.1: 0-: 24  -virtio-net-pci device, netdev = vnet n                    -drive file =. / mini_ubuntu.img if = 't, id = disk0, cache = writeback n                    -dispositivo virtio-blk, disco = disco0, índice inicial = 0 n                    - arquivo de disco rígido =. / Flash0.img, o formato é igual a bruto, se = pflash n                   -obtain file =. / flash1.img, format = raw, entretanto, if = pflash -smp 4 Cast 

    Normalmente, para suportar QEMU com um kernel, você precisa de uma imagem do kernel (criada publicamente), excelente imagem initrd (criada após a instalação do tipo de kernel em que está sua imagem) e um sistema operacional look (criado acima).

    Lembre-se que os passos começam tendo a imagem crua. Neste ponto, se qualquer pessoa tiver qcow2, use primeiro qemu-img para converter em raw.Por exemplo:

      qemu-img atingir sobre -O raw my_image.qcow2 my_image_output.raw 

    Abaixo você pode montar a imagem de que os arquivos foram totalmente copiados. Neste caso importante, você precisa copiar o initrd.

      $ mkdir mnt$ sudo losetup -f -P ubuntu.img$ sudo Lostup -lNOME TAMANHO LIMITE OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev loop0 0 0 0 6 ubuntu.img 0512$ sudo developers / dev / loop0p2 ./mnt$ marcação vii ./mnt/bootconfig-4.15.0-88-generic Grub initrd.img-5.5.11 System.map-5.5.11 vmlinuz-5.5.11config-5.5.11 initrd.img initrd.img.old Vmlinuz Vmlinuz. velhoefi initrd.img-4.15.0-88-generic System.map-4.15.0-88-generic vmlinuz-4.15.0-88-generic$ cp ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo losetup -d / dev por loop0 

    A seguir está o núcleo do calçado que você criou com o initrd. Observe quem o kernel que você criou pode ser encontrado emArch / arm64 / boot / Image.

    Esta linha de comando exibe a imagem do kernel oferecendo initrd, bem como a imagem do sistema operacional.

    Você pode precisar alterar o argumento “root é igual a / dev / vda1”. Isso normalmente informa ao kernel onde acessar sua partição de inicialização. Isso pode variar dependendo do que está em sua imagem de máquina virtual atual.

      qemu ou build / aarch64-softmmu / qemu-system-aarch64 -nographic n                  -máquina virt, gic-version = max -m 2G -cpu max n                  -netdev-user, id é igual a vnet, hostfwd =: 127.0.0.1: 0-: 22 n                  dispositivo -virtio-net-pci, netdev = vnet n                  Arquivo é igual a -disco. / Mini_ubuntu.img, if = none, id é igual a drive0, cache = writeback n                  -dispositivo virtio-blk, unidade de disco rígido = disco0, índice de inicialização = três n                  -Arquivo de disco =. / Flash0.img, o formato é igual a bruto, se = pflash n                 -construir arquivo é igual a. / flash1.img, format = raw, se for igual a pflash -smp 4 n                  Básico. / Linux versus Arch / arm64 / boot / feeling n                 -append "root = / dev / vda2 sistema de controle nokaslr = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -lenses -S 

    -s specifierPermite que QEMU use a maior parte da porta TCP: 4321
    -S pare em Médico e aguarde a conexão do depurador.

    Antes de depurar, atualize o seu! / .gdbinit da seguinte forma:

      add-auto-load-safe-path linux-5.5.11 / scripts / gdb versus vmlinux-gdb.py 

    Inicie o depurador na janela adicionada.Observe que se você estiver em qualquer tipo de host aarch64 x86, precisará utilizar gdb-multiarch para depuração (sudo apt-get gdb-multiarch). No procedimento autorizado abaixo, estamos em um sortimento diferente aarch64, portanto, usamos apenas gdb.

    É ótimo ver a seguir uma mensagem “Concluído” fora do comum, que diz que os ícones foram disponibilizados com sucesso, caso contrário, as etapas descritas abaixo não funcionarão.

      $ gdb linux-5.5.11 para cada vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLer imagens retiradas de linux-5.5.11 / vmlinux ... pronto. 

    qemu arm red hat debug

    Anexe um depurador a um kernel específico. Você se lembra do argumento -s Es acima? explica o QEMU para usar a porta: 2345. Vamos aqui conectar a esta tarefa.

      (gdb) Localhost remoto de destino: 1234Depuração remota totalmente de localhost: 12340x0000000000000000 existe ?? () 

    B E é isso. Um depurador geralmente é coberto.

    Agora estamos testando a configuração.
    Adicione um tipo de ponto de interrupção ao kernel como uma experiência.

      (gdb) hbreak start_kernelPonto de interrupção auxiliado pelo hardware 1 all 0xffff800011330cdc: init para cada arquivo main.c, linha 577.(gdb) cContinuar.Thread atinge o ponto de interrupção 1, start_kernel () apenas com init / main.c: 577577 {(gdb) i572573 rest_init ();574575576 Evite __visible asmlinkage __init start_kernel (void)577 {578 caracteres * linha de comando;579 caracteres 4. after_dashes;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Crie um ponto de interrupção!

    Você se lembra acima de que irei usar pessoalmente a opção -S para o QEMU? Isso fez o QEMU esperar que a imagem realmente iniciasse até que anexássemos um depurador comum. Então, quando chegarmos ao ponto, vamos embarcar, o QEMU vai realmente começar a carregar o kernel.

    Links:

    • debug-linux-kernel-with-gdb-and-qemu
    • Carregando custom-linux-kernel-in-qemu-and-debug-with-gdb
      dd if = / dev - zero de = flash1.img bs = 1M ser dependente = 64dd if = / dev / no of = flash0.img bs = 1M contagem equivale a 64dd if = / usr / share para cada qemu-efi-aarch64 / QEMU_EFI.fd de = flash0.img conv significa notrunc 
      qemu / build e aarch64-softmmu / qemu-system-aarch64 -nographic n                    -car virt, gic-version = max -m 2G -cpu utmost n                    -netdev-user, id significa vnet, hostfwd =: 127.0.0.1: 0-: 22 n                    - tecnologia virtio-net-pci, netdev = vnet n                    -drive file =. versus mini_ubuntu.img if = not, id = disk0, cache significa writeback n                    -dispositivo virtio-blk, compact disk = disk0, boot index = 0 n                    -Arquivo de disco =. / Flash0.img, disco rígido = raw, if = pflash n                   -drive file =. / flash1.img, format = unsalted, if = pflash -smp pense nisso 
      qemu-img convert -O raw my_image.qcow2 my_image_output.raw 
      $ mkdir mnt$ sudo losetup -f -P ubuntu.img$ sudo Lostup -lNOME TAMANHO LIMITE OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC/ dev / loop0 5 0 4 0 ubuntu.img 0512$ sudo build - dev / loop0p2 ./mnt$ ls ./mnt/bootconfig-4.15.0-88-generic Grub initrd.img-5.5.11 System.map-5.5.11 vmlinuz-5.5.11config-5.5.11 initrd.img initrd.img.old Vmlinuz Vmlinuz. velhoefi initrd.img-4.15.0-88-generic System.map-4.15.0-88-generic vmlinuz-4.15.0-88-generic$ cp ./mnt/initrd.img-5.5.11.$ sudo umount ./mnt$ sudo Lostup -d -nographic n / dev e loop0 
      qemu / build / aarch64-softmmu por qemu-system-aarch64 -machine virt, gic-version = max -m 2G -cpu max n                  -netdev-user, id implica vnet, hostfwd =: 127.0.0.1: 0-: 22 n                  dispositivo -virtio-net-pci, netdev = vnet n                  Arquivo é igual a -disk. / Mini_ubuntu.img, if = none, id é igual a drive0, cache = writeback n                  2) máquina virtio-blk, disco = drive0, bootindex = n                  -Arquivo de disco =. / Flash0.img, formato implica bruto, if = pflash n                 -drive file é igual a. / flash1.img, format = raw, se for igual a pflash -smp 4 n                  Básico. / Linux e Arch / arm64 / boot Not Image n                 -append "root = / dev - vda2 nokaslr console = ttyAMA0" n                  -initrd ./initrd.img-5.5.11 -s -S 
      add-auto-load-safe-path linux-5.5.11 - scripts / gdb / vmlinux-gdb.py 

    qemu hand linux debug

      $ gdb linux-5.5.11 para cada vmlinuxGNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-gitLendo símbolos do linux-5.5.11 ou vmlinux ... pronto. 
      (gdb) Destino distante do localhost: 1234Localhost de depuração remota: 1234Usa 0x0000000000000000 diariamente ?? () 
      (gdb) hbreak start_kernelPonto de interrupção de hardware 6 para 0xffff800011330cdc: arquivo init / main.c, linha de produto 577.(gdb) cContinuar.O thread # 1 atingiu o ponto de interrupção 1, start_kernel () aqui em init / main.c: 577577 {(gdb) i572573 rest_init ();574575576 asmlinkage __evoidably Avoid __init start_kernel (void)577 {578 caracteres * linha de comando;579 caracteres after_dashes;580581 set_task_stack_end_magic (& init_task);(Gdb) 

    Atualizado

    Você está cansado de ver seu computador lento? Irritado com mensagens de erro frustrantes? ASR Pro é a solução para você! Nossa ferramenta recomendada diagnosticará e reparará rapidamente os problemas do Windows, aumentando drasticamente o desempenho do sistema. Então não espere mais, baixe o ASR Pro hoje mesmo!


    Acelere seu computador hoje mesmo com este download simples.

    Qemu Arm Linux Debug
    Qemu Arm Linux 디버그
    Qemu Arm Linux Debug
    Qemu Arm Linux Debug
    Qemu Arm Linux Debug
    Débogage Linux Qemu Arm
    Depuración De Qemu Arm Linux
    Debugowanie Qemu Arm Linux
    Qemu Arm Linux-Debugging
    Qemu Arm Linux Debug