You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11(AOSP)系统应用调试报错:gdbclient.py执行失败求助

解决Android 11 AOSP模拟器调试gdbclient.py的UnicodeDecodeError问题

错误原因分析

  1. 符号文件缺失警告:脚本在symbols目录找不到未剥离符号的可执行文件,会导致调试时无法查看完整符号信息。
  2. Unicode解码错误:gdbrunner模块读取二进制可执行文件时用了文本模式(默认utf-8解码),但二进制文件包含非utf-8字节,触发解码失败。

解决步骤

1. 确保生成并找到正确的符号文件

  • 编译AOSP或目标应用时,确保生成符号文件:
    # 全量编译时保留符号
    make -j$(nproc)
    # 或单独编译目标应用
    cd path/to/your/app
    mm -j$(nproc)
    
  • 检查符号文件路径:确认/home/asabbagh/android11-release/out/target/product/generic_x86_64/symbols下存在目标应用的可执行文件,比如/system/app/YourAppName/YourAppName。

2. 修复gdbrunner的文件读取模式

打开/home/asabbagh/android11-release/development/python-packages/gdbrunner/__init__.py,找到get_binary_arch函数中打开文件的代码:

# 原代码(类似)
binary_file = open(binary_path, 'r')

修改为二进制模式打开:

binary_file = open(binary_path, 'rb')

保存后重新执行gdbclient.py。

3. 手动指定可执行文件路径

如果脚本自动查找符号文件失败,直接在命令中指定本地未剥离的可执行文件:

gdbclient.py -e /home/asabbagh/android11-release/out/target/product/generic_x86_64/symbols/system/app/YourAppName/YourAppName -p 7984

4. 验证主机与模拟器的通信连接

  • 先确认adb连接正常:
    adb devices
    
  • 手动建立gdbserver连接,排除脚本问题:
    # 模拟器端启动gdbserver
    adb shell gdbserver :5039 --attach 7984
    # 主机端用gdb连接
    gdb -ex "target remote localhost:5039"
    

如果手动连接成功,说明通信无问题,问题出在脚本本身的符号查找或文件读取逻辑。

内容的提问来源于stack exchange,提问作者Anthony Sabbagh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:43:10