NDKdebugging:ndk-gdb无法拉取app_process。 谁和何时创buildapp_process二进制文件?

在调查本地代码中的断点问题时,我决定检查ndk-gdb是否正常工作。 我已经删除了app_process,启动了Javadebugging并运行了ndk-gdb --force 。 猜猜看,app_process没有创build。 ndk-gdb --verbose输出有这样的一行:

 ## 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. 

我已经从目标设备卸载应用程序,重新启动设备,并重复。 仍然没有app_process。 所以,我不知道这里有什么问题,我也想知道什么时候创build了这个文件,以及什么过程/脚本。

Solutions Collecting From Web of "NDKdebugging:ndk-gdb无法拉取app_process。 谁和何时创buildapp_process二进制文件?"

如前所述,Android 5.0具有/system/bin/app_process作为/system/bin/app_process的符号链接。 由于不能使用adb pull符号链接,因此ndk-gdb脚本将无法按原样工作。

如下所示更改ndk-gdb以支持api21更改以及向后兼容<api21:

 # 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 

编辑:或:

 # 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" 

原始更改也在这里: http : //pastebin.com/YfxNs06U 。 请注意,这个更改将app_process32重命名为app_process ,以便在Eclipse中支持单个调试配置。

发现问题。 我的设备运行Android 5.0预览,app_process有一个名为app_process32的文件的符号链接。 所以拉app_process32工作正常。

除了紫罗兰长颈鹿的答案,交换脚本ndk-gdb的行

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

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

这解决了这个Android 5.0的问题,我能够像以前一样构建和调试。