kgdb начинается далеко от init.c start_kernel () - PullRequest
0 голосов
/ 12 ноября 2011

Почему kgdb всегда начинаются с kernel/kgdb.c:1749 строк "kgdb: ожидание соединения с удаленным gdb", просто шаг на пути к ядру Linux.

Я хочу начать с самого начала.

Моя среда:

  • ПК ubuntu10.10
  • gdb-kernel 2.6.34.1
  • filesys, созданный busybox
  • VirtualMach является QEMU

Следуя советам веб-поиска, я создал свой linux. Я могу использовать это плавно, но когда я пытаюсь сделать это с помощью удаленного gdb, ядро ​​всегда начинается с:

kernel / kgdb.c: 1749 "kgdb: ожидание соединения с удаленного gdb"

, что слишком далеко от функции start_kernel, с которой я хочу встретиться.

Я использую следующее:

qemu -kernel /usr/src/work/bzImage -append "root=/dev/sda kgdboc=ttyS0,115200 kgdbwait" 
     -boot c -hda /usr/src/work/busybox.img -k en-us -serial tcp::4321,server

gdb /usr/src/work/vmlinux  (gdb) target remote localhost:4321

Затем я добавляю -S, чтобы он мог начинаться с самого начала. Но когда я gdb это все равно что-то не так.

Когда я ввожу команду next, она не переходит на следующую строку и не переходит в другое место. Например, я установил точку останова на init.c startkernel() после next. Это в другом файле.

1 Ответ

0 голосов
/ 13 ноября 2011

Если «kgdb: ожидание соединения с удаленным GDB» не достаточно рано для вас, вам придется попробовать что-то кроме kgdb.Подумайте об этом: kgdb - это сервис, предоставляемый ядром.Вы не можете отлаживать ядро ​​«с самого начала», потому что ядро ​​должно выполнить достаточно инициализации, чтобы оно могло предоставить службу kgdb.

К счастью, есть еще один вариант для вас.Согласно этому источнику , если вы запустите qemu с флагами -s -S, qemu запустит систему и будет ждать, пока вы подключите отладчик к localhost:1234, прежде чем он даже загрузит ядро.Это достаточно рано?

...