2010-08-11 7 views
5

J'essaye de déboguer une application avec le NDK sur un Motorola Droid. Je en suivant les instructions here et je l'ai eu du succès dans le passé sur un émulateur (j'ai accès root évidemment) mais quand je lanceDéboguer le code natif sur Motorola Droid

gdbserver :5039 --attach 1082 

à travers la coquille adb, je reçois un gdbserver:permission denied. Évidemment, comme c'est un stock Droid, je n'ai pas d'accès root. Est-ce nécessaire? Est-ce que je manque juste quelque chose?

Merci d'avance!

Modifier J'ai confirmé que cette commande fonctionne sur l'émulateur. Est-ce que cela peut être fait sur un appareil non-root? J'ai également confirmé les mêmes erreurs Permission Denied sur un EVO 4G.

Édition 3 J'ai également découvert qu'un périphérique de production (par exemple EVO 4G ou Droid) ne me donnerait pas une erreur "non trouvé". Par exemple, quand j'ai tapé quelque chose comme ljs au shell, je reçois ljs: permission denied. L'erreur est la même si la commande existe et je ne peux pas y accéder (sudo - vraisemblablement) ou si la commande n'existe pas (ljs).

+0

Je ne suis pas sûr ... mais n'avez-vous pas besoin d'Android 2.2 pour déboguer avec gdb? Avez-vous Android 2.2 sur votre Droid? – hara

+0

Je ne sais pas et pour autant que je m'en souvienne, les instructions gdb/NDK existaient avant 2.2. Quelqu'un peut-il confirmer cela? –

+0

Je pense que même les périphériques non "rooted" peuvent exécuter 'su' via adb pour accéder aux commandes de la console privilégiée, mais je ne l'ai pas essayé. Si cela fonctionne, faites le moi savoir et je posterai une réponse correcte. –

Répondre

2

Si vous utilisez le NDK r4, vous ne devriez pas avoir à en faire beaucoup. Au lieu de cela:

  1. Ajouter android: débogable = « true » dans votre noeud d'application de ApplicationManifest.xml
  2. Pour tout indigène (construit avec NDK) bibliothèques, répétez # 1 avant de les construire (vous devez noter un peu plus de informations lors de la compilation où ndk-build copie un fichier gdbserver et gdb.setup)
  3. Lancez $ NDK_ROOT/ndk-gdb avec les options désirées (par exemple: je casse souvent Eclipse avant de cliquer sur le code natif, puis j'attache en utilisant le -E option)
1

Je ne vois pas référence à « localhost » comme par

 
gdbserver :5039 --attach pid 

dans le lien que vous avez donné - ce qui est sur le combiné .... avez-vous envoyé le port

 
adb forward tcp:5039 tcp:5039 

à partir du poste de travail?

aussi:

 
If you can't find either special version of gdb, run find prebuilt -name 
arm-eabi-gdb in your source tree to find and run the latest version 

Avez-vous essayé d'utiliser 'bras-eabi-gdb' au lieu, en remplaçant le gdb ci-dessus avec la version explicite ....?

+0

J'ai enlevé 'localhost' sans succès.Je n'ai essayé aucune des versions de gdb sur mon hôte car je n'ai pas pu démarrer le serveur sur l'appareil. –

Questions connexes