Wie bekomme ich ndk-gdb auf Android zum Laufen?

Lesezeit: 3 Minuten

Wie bekomme ich ndk gdb auf Android zum Laufen
Simplex

Ich versuche, den NDK-Debugger zum Laufen zu bringen, aber bisher ohne Erfolg.

Um sicherzustellen, dass meine Debugsymbole vorhanden und gültig sind, verwende ich die Compileroptionen -O0 und -g und den ndk-build-Parameter NDK_DEBUG=1.

Das ndk-gdb-Skript läuft ohne Probleme und startet GDB. Wenn ich einen “sharedlibrary”-Befehl ausführe, erhalte ich Folgendes:

Symbols already loaded for /bla/bla/libMySharedLib.so

Wenn ich jedoch versuche, die Ausführung zu unterbrechen oder zB einen Segfault zum Testen hinzuzufügen, bekomme ich nie eines der Symbole aus dieser Bibliothek in der Aufrufliste. Die einzigen Symbole, die ich erhalten habe, stammen von der libc, wenn ich beispielsweise die Ausführung unterbreche, während sie auf einen Mutex wartet. Habe auch erfolglos versucht, Haltepunkte hinzuzufügen. GDB lässt mich die Breakpoints hinzufügen und der Code läuft gut, aber die Breakpoints werden nie ausgelöst.

Ich verwende API Level 8, da ich Android 2.2 (Froyo) unterstützen muss.

1642055223 907 Wie bekomme ich ndk gdb auf Android zum Laufen
Mārtiņš Možeiko

Sie müssen keine Schalter -O0 oder -g verwenden. Sie müssen einen der folgenden Schritte ausführen:

  1. setzen android:debuggable="true" zum <application> eintragen AndroidManifest.xml Datei
  2. benutzen NDK_DEBUG=1 nach ndk-build
  3. setzen APP_OPTIM := debug in der Datei Application.mk

Wenn Sie eines dieser drei Dinge tun, werden automatisch die Schalter -O0 und -g verwendet.

Können Sie versuchen, gdb manuell ohne gdb-Skript auszuführen? Es umfasst folgende Schritte:

  1. drängen gdbserver Datei zu /data/local Ordner auf dem Gerät
  2. Ausführen Ihrer Anwendung & Aufrufen in adb shell folgender Befehl gdbserver :5055 --attach PID, wobei PID Ihre Bewerbungsprozess-ID ist.
  3. Laufen adb forward tcp:5055 tcp:5055 auf host
  4. Laufen arm-linux-androideabi-gdb.exe aus deinem App-Ordner
  5. Eingabe der folgenden Befehle in gdb
  6. set solib-search-path obj/local/armeabi
  7. file obj/local/armeabi/libMySharedLib.so
  8. target remote :5055

Und sehen Sie, ob Sie dann debuggen können.

Wenn Sie Symbole für andere freigegebene Bibliotheken sehen möchten, die Ihre Bibliothek verwendet, wie libc.so, dann ziehen Sie sie vom Gerät (von /system/lib Ordner) zu Ihrem obj/local/armeabi Mappe.

  • Aus einem anderen Grund musste ich mein Projekt von Grund auf neu erstellen; Nachdem Sie dies getan und versucht haben, alles nach Vorschrift einzurichten, einschließlich Ihrer Vorschläge Mārtiņš, hat das NDK-Debugging funktioniert. Ich bin mir leider nicht sicher was das Problem war. Übrigens musste APP_OPTIM auf Debug (Kleinbuchstaben) anstatt auf Debug gesetzt werden.

    – Simplex

    17. Mai ’12 um 6:49

  • [Re]gebaut mit der Option NDK_DEBUG=1 Wenn Aufruf von ‘ndk-build’; nicht danach.

    – Seelenseekah

    20. November ’12 um 18:14


  • wo ist der “ndk-build” ?

    – Android-Entwickler

    22. Januar ’13 um 12:29

  • ndk-build ist ein Befehl, den Sie aufrufen, um nativen Code zu erstellen. Das ndk-build-Skript wird von Android NDK bereitgestellt und befindet sich im Stammverzeichnis des zip/tar.bz2-Archivs.

    – Mārtiņš Možeiko

    22. Januar ’13 um 18:10

  • Wie schieben Sie den gdbserver auf das Gerät?

    – Revolutionär

    25. September ’14 um 9:46

.

482690cookie-checkWie bekomme ich ndk-gdb auf Android zum Laufen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy