Я экспериментировал с получением 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)