Я экспериментировал с получением kgdb для работы Nexus One.
Я вытащил ядро из https://android.googlesource.com и включил все, что связано с kgdb, включая тестирование kgdbts, используя menuconfig, Успешно построил ядро и высветил его на устройстве (которое разблокировано и запущено CyanogenMod 7)
Я также выполнил инструкции, найденные в http://bootloader.wikidot.com/android:kgdb, чтобы включить соединение usb как последовательное соединение, как требуется kgdb (и проверена связь от ttyACM0 до ttyGS0 успешно).
Существуют следующие папки, указывающие, что kgdboc и kgdbts были встроены в ядро:
/sys/modules/kgdboc/parameters
/sys/modules/kgdbts/parameters
Ниже представлен результат dmesg, показывающий, что тестирование kgdbts выполняется, показывает, что (я думаю) является успешным завершением тестов:
# dmesg | grep kgdb
<6>[ 12.974060] kgdb: Registered I/O driver kgdbts.
<6>[ 12.981781] kgdbts:RUN plant and detach test
<6>[ 12.995178] kgdbts:RUN sw breakpoint test
<6>[ 13.002441] kgdbts:RUN bad memory access test
<6>[ 13.010864] kgdbts:RUN singlestep test 1000 iterations
<6>[ 13.019042] kgdbts:RUN singlestep [0/1000]
<6>[ 13.077850] kgdbts:RUN singlestep [100/1000]
<6>[ 13.132720] kgdbts:RUN singlestep [200/1000]
<6>[ 13.187500] kgdbts:RUN singlestep [300/1000]
<6>[ 13.242370] kgdbts:RUN singlestep [400/1000]
<6>[ 13.297149] kgdbts:RUN singlestep [500/1000]
<6>[ 13.351928] kgdbts:RUN singlestep [600/1000]
<6>[ 13.406829] kgdbts:RUN singlestep [700/1000]
<6>[ 13.461578] kgdbts:RUN singlestep [800/1000]
<6>[ 13.516540] kgdbts:RUN singlestep [900/1000]
<6>[ 13.570922] kgdbts:RUN do_fork for 100 breakpoints
<6>[ 21.117645] kgdb: Unregistered I/O driver kgdbts, debugger disabled.
Я считаю, что проблема, с которой я сталкиваюсь, - заставить ядро запускать kgdb.
# echo -n g > /proc/sysrq-trigger
Просто приводит к отбрасыванию меня обратно в командную строку и (я думаю), что это должно заморозить все и отправить запрос на usb, который используется как последовательный порт psuedo, так как у телефона нет реального.
Из того, что я собираю из своего исследования, что приглашение должно быть триггером, который позволит мне выпускать
(gdb) target remote /dev/ttyACM0
И подключитесь к сеансу отладки с ядром.
Я также протестировал /proc/sysrq-trigger с помощью b и c только для подтверждения того, что я могу передать некоторые команды sysrq.
Итак, мой вопрос, следуя моей длительной попытке предоставить как можно больше информации, является причиной того, что g не запускает отладчик?
Это моя первая попытка отладки ядра в любой системе, и у меня не было возможности рассказать о моем поиске в google, поэтому я обращаюсь к вам. Спасибо!
(Я также попытался поставить kdgbwait в командной строке ядра без успеха, поскольку я считаю, что это еще не поддерживается ядром android)