gpt4 book ai didi

android - NDK 调试 : ndk-gdb fails to pull app_process. 谁以及何时创建了 app_process 二进制文件?

转载 作者:可可西里 更新时间:2023-11-01 09:47:44 26 4
gpt4 key购买 nike

在调查 native 代码中的断点问题时,我决定检查 ndk-gdb 是否正常工作。我删除了 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。所以,我想知道这里有什么问题,我也想知道这个文件是什么时候创建的,由什么进程/脚本创建的。

最佳答案

如前所述,Android 5.0 将 /system/bin/app_process 作为到 /system/bin/app_process32 的符号链接(symbolic link)。由于无法使用 adb pull 提取符号链接(symbolic link),因此 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 - NDK 调试 : ndk-gdb fails to pull app_process. 谁以及何时创建了 app_process 二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com