2010-02-16 6 views
4

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

Répondre

1

Essentiellement, à ce stade avec NDK 1.6, j'ai trouvé qu'il y soutenir tout simplement pas pour ce genre de débogage strictement avec le NDK. Cependant, si vous utilisez le PDK (kit de développement de plate-forme), vous pouvez effectuer ce type de débogage avec du code natif. Nous n'avons pas essayé le PDK, car la génération d'un fichier map a fonctionné assez bien pour nous (voir this SO question), mais si vous suivez cette route, vérifiez the NDK google group pour plus de détails.

Questions connexes