Question

Je suis en train de déboguer une application Android qui appelle le code natif pour faire un peu de rendu GL. Le code natif est le code existant que je suis en train de le port (et que je ne sais pas vraiment bien). J'ai le code existant compilation, liaison et l'installation correctement, et j'ai des fonctions natives qui appellent pour ce code qui sont correctement appelé de mon code Java. Je reçois une erreur de segmentation que je suis en train de traquer, et ayant quelques difficultés à obtenir gdb pour définir un point d'arrêt dans le programme. Ceci est sur Windows XP avec Cygwin -. Et je devrais mentionner probablement que je suis encore à apprendre gdb

J'ai commencé avec les directions http: / /honeypod.blogspot.com/2008/01/debug-native-application-for-android.html ; voici ce que je fais actuellement.

Lancez 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 un shell 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 semble donc que le point d'arrêt se prépare ok, et que les symboles sont ok, mais peut-être l'adresse est erronée quand il tente d'insérer le point d'arrêt. J'ai essayé plusieurs variantes de différentes commandes à partir de la page Web référencé ci-dessus, mais jusqu'à présent, pas de chance.

Toutes les idées ce qui se passe?

Merci

Était-ce utile?

La solution

Pour l'essentiel, à ce stade avec NDK 1.6, je l'ai trouvé qu'il y soutenir tout simplement pas pour ce genre de débogage strictement avec le NDK. Toutefois, si vous utilisez le PDK (kit de développement de la plate-forme), vous pouvez faire ce genre de débogage avec le code natif. Nous n'avons pas essayé le PDK, parce que la génération d'un fichier carte fonctionnait assez bien pour nous (voir cette question SO ), mais si vous aller dans cette voie, vérifier groupe Google NDK pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top