Anleitung zum Debuggen einer App auf Android mit GDBSERVER?
Ich versuche zu Debuggen, die eine native shared library, die meine App nutzt über JNI. Ich kann anfügen an einen Laufenden app Prima mit "gdbserver --attach pid" aber ich brauche, um tatsächlich starten meiner app, wenn ich starten Sie den gdbserver Befehl.
Es gibt eine million blog-trifft auf dieses Thema, aber keiner von Ihnen scheint klar zu sein, wie Sie Ihre app starten. Sie alle sagen, geben Sie einfach "gdbserver 10.0.2.2:1234 ./MyProgram" aber was genau ist "MyProgram". Ist, dass MyProgram.apk? Ist es MyProgram.so? Ist es eine andere Datei, die erzeugt wird, wenn die app installiert ist? Wenn ja, wie ist der Pfad?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während es möglich ist, zu entwickeln, freistehende Anwendungen, die gestartet werden kann direkt von der shell, wie andere beschreiben, es klingt wie Ihr code ausgeführt wird, innerhalb der Android-application-framework. Daher, Sie müssen nicht eine ausführbare Datei und haben stattdessen eine APK mit der Dalvik-class-Dateien zusammen mit anderen Ressourcen, einschließlich Ihrer Muttersprache gemeinsamen Objekt.
Starten einer Anwendung in eine APK beinhaltet mehrere Schritte
Während Sie können nicht starten Sie eine APK direkt durch die übergabe einer ausführbaren Datei, gdbserver, seine ziemlich leicht auslösen, starten Sie es von der shell aus mit der
am
Befehl.Sobald Ihre Anwendung ausgeführt wird, verwenden Sie
gdbserver --attach <pid>
wie Sie vor sich haben. Wenn Sie Glück haben, die Anwendung wartet, bis einige user-Interaktion vor dem Aufruf in Ihrem nativen code, um Ihnen eine chance geben, zu befestigen, und stellen Sie Ihre breakpoints im GDB.Bietet Google eine offizielle Lösung für dein problem: 'ndk-gdb'
Es ist im NDK. Wenn ich mich Recht erinnere, ist es erforderlich, dass Sie eine Kopie der gdbserver im inneren gebündelt Ihre APK; wenn ich mich Recht erinnere, dies geschieht automatisch, wenn Sie baute die APK mit "ndk-build", und spezifiziert die entsprechenden Argumente.
Finden Sie die Google-Dokumentation in $NDK/docs/NDK-BUILD.html und $NDK/docs/NDK-GDB.html
</ryan>