J'ai essayé d'obtenir kgdb
pour faire fonctionner le Nexus One.
J'ai retiré le noyau de https://Android.googlesource.com et a permis de tout faire pour kgdb
y compris kgdbts
l'essai en utilisant menuconfig
. J'ai construit avec succès le noyau et l'ai flashé sur l'appareil (qui est débloqué, enraciné et fonctionne avec CyanogenMod 7).
J'ai également suivi les instructions trouvées sur http://bootloader.wikidot.com/Android:kgdb pour permettre à la connexion usb d'agir comme une connexion série, comme l'exige le système de gestion de la sécurité. kgdb
(et des communications testées de ttyACM0
a ttyGS0
avec succès).
Les dossiers suivants existent et indiquent que kgdboc
y kgdbts
ont été intégrées au noyau :
/sys/modules/kgdboc/parameters
/sys/modules/kgdbts/parameters
Voici la sortie de dmesg montrant l'état de l'installation. kgdbts
les tests effectués montrent ce que (je pense) est une réussite des tests :
# 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.
Je crois que le problème que je rencontre est de faire en sorte que le noyau déclenche kgdb
.
# echo -n g > /proc/sysrq-trigger
Le résultat est de me ramener à l'invite de commande et (je pense) qu'elle est supposée tout geler et envoyer une invite via usb qui est utilisée comme un pseudo port série puisque le téléphone n'en a pas de réel.
D'après ce que j'ai compris de mes recherches, cette invite est censée être le déclencheur qui me permettra d'émettre
(gdb) target remote /dev/ttyACM0
Et se connecter à une session de débogage avec le noyau.
J'ai également testé /proc/sysrq-trigger
con b
y c
Je confirme juste que je suis capable de passer certaines commandes à sysrq
.
Donc ma question, suite à ma longue tentative de fournir autant d'informations que possible, est la suivante : pourquoi l'industrie de l'énergie est-elle si importante ? g
ne déclenche pas le débogueur ?
C'est ma première tentative de débogage du noyau sur n'importe quel système et je ne sais plus comment formuler ma recherche sur Google, alors je me tourne vers vous. Merci !
(J'ai aussi essayé de mettre kdgbwait dans la ligne de commande du noyau sans succès car je crois que ce n'est pas encore supporté par le noyau Android).