Frage

Ich versuche, eine Android -App zu debuggen, die native Code anruft, um etwas GL -Rendering zu machen. Der native Code ist vorhandener Code, den ich versuche zu portieren (und den ich nicht wirklich gut weiß). Ich habe das vorhandene Codekompilieren, Verknüpfen und Installieren korrekt und einige native Funktionen, die auf diesen Code einrufen, der korrekt aus meinem Java -Code aufgerufen wird. Ich bekomme einen Segfault, den ich versuche, aufzuspüren, und habe Probleme, GDB zu bekommen, um einen Haltepunkt im Programm festzulegen. Dies ist unter Windows XP mit Cygwin - und ich sollte wahrscheinlich erwähnen, dass ich immer noch GDB lerne.

Ich begann mit den Anweisungen bei http://honeypod.blogspot.com/2008/01/debug-native-application-for-for-android.html; Folgendes mache ich gerade.

Starten Sie die App im Emulator.

In einer CMD -Eingabeaufforderung:

> 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

In einer Cygwin -Hülle:

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.

Es sieht also so aus, als würde der Haltepunkt in Ordnung gesetzt und die Symbole sind in Ordnung, aber vielleicht ist die Adresse falsch, wenn er versucht, den Haltepunkt einzufügen. Ich habe verschiedene Variationen verschiedener Befehle aus der oben genannten Webseite ausprobiert, aber bisher kein Glück.

Irgendwelche Ideen, was ist los?

Vielen Dank

War es hilfreich?

Lösung

Im Wesentlichen habe ich zu diesem Zeitpunkt mit NDK 1.6 festgestellt, dass diese Art von Debugging mit dem NDK einfach nicht unterstützt wird. Wenn Sie jedoch das PDK (Plattform Development Kit) verwenden, können Sie diese Art des Debuggens mit nativem Code durchführen. Wir haben die PDK nicht ausprobiert, weil das Generieren einer Kartendatei für uns gut genug funktioniert hat (siehe Diese Frage), aber wenn Sie diese Route gehen, überprüfen Sie Die NDK Google Group für mehr Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top