Débogage NDK: ndk-gdb ne parvient pas à extraire app_process. Qui et quand crée le binary app_process?

En recherchant un problème avec les points d’arrêt dans le code natif, j’ai décidé de vérifier si ndk-gdb fonctionnait correctement. J’ai supprimé app_process, lancé le débogage Java et lancé ndk-gdb --force . Devinez quoi, app_process n’est pas créé. ndk-gdb --verbose sortie a cette ligne:

 ## COMMAND: adb_cmd pull /system/bin/app_process obj/local/armeabi-v7a/app_process remote object '/system/bin/app_process' not a file or directory Pulled app_process from device/emulator. 

J’ai désinstallé l’application du périphérique cible, redémarré le périphérique et répété. Toujours pas de processus_app. Donc, je me demande quel est le problème ici, et je me demande aussi quand ce fichier est créé, et par quel processus / script.

Comme mentionné précédemment, Android 5.0 a /system/bin/app_process comme un lien symbolique vers /system/bin/app_process32 . Comme un lien symbolique ne peut pas être adb pull avec adb pull , le ndk-gdb ne pourra pas fonctionner tel ndk-gdb .

Changez ndk-gdb comme suit pour prendre en charge les modifications api21 ainsi que la compatibilité ascendante pour

 # Get the app_server binary from the device APP_PROCESS=$APP_OUT/app_process if [ "$API_LEVEL" -lt "21" ] ; then run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS` log "Pulled app_process from device/emulator to $APP_PROCESS" else run adb_cmd pull /system/bin/app_process32 `native_path $APP_PROCESS` log "Pulled app_process32 from device/emulator to $APP_PROCESS" fi 

Éditeur:

 # Get the app_server binary from the device APP_PROCESS=$APP_OUT/app_process APP_PROCESS_DEVICE=app_process32 if [ "$API_LEVEL" -lt "21" ] ; then APP_PROCESS_DEVICE=app_process fi run adb_cmd pull /system/bin/$APP_PROCESS_DEVICE `native_path $APP_PROCESS` log "Pulled $APP_PROCESS_DEVICE from device/emulator to $APP_PROCESS" 

Le changement original est également ici: http://pastebin.com/YfxNs06U . Notez que cette modification renomme app_process32 en app_process lorsqu’elle est app_process à votre machine de développement pour prendre en charge une seule configuration de débogage dans Eclipse.

Trouvé le problème. Mon appareil exécute l’aperçu Android 5.0 et app_process un lien symbolique vers un fichier appelé app_process32. Donc, tirer app_process32 fonctionne bien.

En plus de la réponse de Violet Giraffe, échangez dans le script ndk-gdb la ligne

 run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS` 

avec

 run adb_cmd pull /system/bin/app_process32 `native_path $APP_PROCESS` 

Cela a résolu le problème pour moi pour ce problème Android 5.0 et j’ai pu créer et déboguer comme avant.