Módulo Kernel do Linux Depuração remota com GDB + KGDB, a resposta remota do pacote 'g' é muito longa

1

Estou tentando depurar remotamente o kernel do Linux e estou tendo problemas.

Minha configuração:

  • Meta de destino com o Ubnutu Linux com meu kernel personalizado 4.3 que eu construí com informações de depuração e KGDB.
  • Máquina de desenvolvimento com Windows e Cygwin.

Conectei as máquinas com porta serial no lado do Linux e USB no lado da máquina de desenvolvimento. Na máquina alvo: Eu carreguei meu módulo X com insmod,

>cat /sys/module/X/sections/.text
0xffffffffc046e000 
>cat /sys/module/X/sections/.bss
0xffffffffc04708c0 
>cat /sys/module/X/sections/.data
0xffffffffc0470000

Eu li que devo iniciar o kernel com "alguns parâmetros", mas não entendo como fazer isso no Ubuntu, então fiz isso:

>echo "ttyS0,115200 > /sys/module/kgdboc/parameters/kgdboc

Também tentei isso:

echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc

e depois

>echo g > /proc/sysrq-trigger

Neste ponto, a máquina Linux congelou, o que é bom. (esperando pelo gdb) Na máquina Windows eu abri o cygwin, Eu coloquei os arquivos vmlinux e X.o no diretório raiz, assim como o código fonte no lugar certo. Então eu corri

gdb ./vmlinux - b 115200
(gdb) add-symbol-file byt_adsp21479.o 0xffffffffc046e000 -s .bss 0xffffffffc04708c0 -s .data 0xffffffffc0470000
(gdb) set architecture i386:x86-64:intel

Depois eu configurei alguns pontos de interrupção no meu módulo do kernel e executei

(gdb) target remote /dev/ttyS7 which is COM8

que funcionou e depois de digitar

(gdb) continue

A máquina linux descongelada, No entanto, quando eu executei uma operação em minha máquina Linux que deve acionar um ponto de interrupção, recebi esta mensagem na máquina de desenvolvimento:

[New Thread 3264]
Ignoring packet error, continuing...
Remote 'g' packet reply is too long: 0840000000000000000e00080847c0ffffffff000100c0000000000300000000000000bc3b63360088ffff0000000000000000a03b63360088ffff983b63360088ffff000063360088ffff2f944e2fbd3b000020c00a360088ffff000000000000000000000000000000000300000000000000000000000000000000ccd7ceff7f0000ede146c0ffffffff4602000010000000180000000000000000000000

O mais estranho é que, uma vez, consegui entrar em duas funções, mas recebi a mesma mensagem de erro. Quais podem ser os problemas?

Apenas FYI eu já passei por abandonar a depuração através da porta serial, e tentando através de ethernet, Então eu fui aqui link E baixei e construí o kgboe, mas quando tentei rodar o insmod kgdboe.ko eu recebi um erro:

insmod: Error: could not insert module kgdboe.ko : Unknown symbol module

e quando eu corro o dmesg Vejo

kgdboe: Unknown symbol set_memory_rw (err 0)

Com a configuração que tenho, alguém pode me ajudar a encontrar uma maneira de depurar meu módulo do kernel, por favor. Obrigada!

    
por Michael P 23.12.2015 / 20:27

0 respostas