[android]NDK 调试 ︰ ndk gdb 未能拉 app_process。谁以及何时创建 app_process 二进制吗?

发布时间: 2016/5/28 10:11:02
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

同时调查与命中断点在本机代码中的问题,我决定检查一下是否 ndk gdb 工作还 OK。已经删除了 app_process,开始 Java 调试和运行 ndk-gdb --force 。你猜怎么着,app_process 则不会创建。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。所以,我不知道这里的问题是什么,我还想知道什么时候该文件创建,并由什么 process / script

解决方法 1:

如前所述, Android 5.0 具有 /system/bin/app_process 作为一个符号连接到 /system/bin/app_process32 。因为一个符号链接不能拉扯与 adb pullndk-gdb script 将不能够作为工作-是。

变化 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_process32app_process 时它拉扯到你的开发机器支持有了单一的调试 config 在 Eclipse 中。

官方微信
官方QQ群
31647020