J'essaie de déboguer une application Android qui appelle le code natif pour faire du rendu GL. Le code natif est le code existant que j'essaie de porter (et que je ne connais pas très bien). J'ai le code existant compilant, liant et installant correctement, et j'ai quelques fonctions natives qui appellent à ce code qui sont correctement appelées de mon code Java. Je reçois une erreur de segmentation que j'essaie de retrouver, et je rencontre des problèmes pour que gdb définisse un point d'arrêt dans le programme. C'est sur Windows XP avec Cygwin - et je devrais probablement mentionner que j'apprends encore gdb.gdb Erreur d'entrée/sortie de débogage à distance à Android
J'ai commencé avec les directions à http://honeypod.blogspot.com/2008/01/debug-native-application-for-android.html; voici ce que je suis en train de faire.
Démarrez l'application dans l'émulateur.
Dans une invite cmd:
> adb forward tcp:1234 tcp:1234
> adb shell
# gdbserver localhost:1234 --attach 2120
gdbserver localhost:1234 --attach 2120
Attached; pid = 2120
Listening on port 1234
Dans une coquille Cygwin:
arm-eabi-4.2.1/bin/arm-eabi-gdb.exe out/apps/app-android/libDM.so
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-cygwin --target=arm-elf-linux"...
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
warning: shared library handler failed to enable breakpoint
0xafe0da04 in AppRefCounted::unref() at ../../stlport/stl/_iosfwd.h:39
39 class basic_ostream;
Current language: auto; currently c++
(gdb) b Java_com_app_AppRenderer_onCreate
Breakpoint 1 at 0xafff1b1a: file apps/app-android/../../../app-Android/jni/DMJNI/DMInterface.cpp, line 75.
(gdb) c
Continuing.
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0xafff1b1a: Input/Output error.
il ressemble le point d'arrêt se prépare ok, et que les symboles sont ok, mais peut-être l'adresse est mal quand il essaie d'insérer le point d'arrêt. J'ai essayé plusieurs variantes de commandes différentes de la page Web référencée ci-dessus, mais jusqu'à présent, pas de chance.
Des idées? Que se passe-t-il?
Merci