openharmony通过hilog日志定位问题方法在复杂场景和跨模块状况下定位很费劲。之前一直是在linux环境下使用eclipse做c++开发工作,所以想着用eclipse做openharmony c++远程调试。
环境准备
rk3568开发板(arm架构,openharmony运行环境)
ubuntu22.04.03带UI桌面系统(x86-64架构,openharmony编译环境,eclipse+CDT用于c++开发,gdb-multiarch用于跨架构远程调试)
1编译带DEBUG信息项目
接下来以企业设备管理包做样例讲解
openharmony+rk3568开发板 企业设备管理项目编译,刷镜像,运行,代码上库请参照OpenHarmony-标准设备系统代码操作梳理_openharmony 标准设备系统代码操作梳理
要编译带有debug信息的so文件,需要加上指令--gn-args="is_debug=true"
完整编译指令./build.sh --product-name rk3568 --ccache --build-target enterprise_device_management --gn-args="is_debug=true"
然后将so文件推送到开发板上去
hdc shell mount -o remount,rw /
hdc file send .\libedmservice.z.so /system/lib/
hdc file send .\libedm_commom.z.so /system/lib/
hdc file send .\libplugin_kits.z.so /system/lib/
% 推送部分或者所有so文件 %
hdc file send .\librestrictions.z.so /system/lib/module/enterprise/
2 开发板被调试准备
开发板需要安装gdbserver,gdbserver可以去https://codeload.github.com/hugsy/gdb-static/zip/refs/heads/master下载
这边开发板是arm架构的,使用以下指令安装gdbserver
hdc shell mount -o remount,rw /
hdc file send .\gdbserver-7.10.1-arm6v /bin/gdbserver
hdc shell chmod 777 /bin/gdbserver
3 ubuntu桌面系统调试准备
安装gdb-multiarch(直接用gdb,跨架构调试可能会报错)
导入项目
通过配置paths and Symbols来配置头文件搜索目录
4 调试
前提:开发板与ubuntu桌面系统处于同一个网络,相互可以ping通。(开发板是支持wifi,可以手机搭建热点)
开发板运行以下指令监听1234端口,允许远程调试
eclipse远程调试配置
注意这里要选择下面那一个
点击Debug按钮开始调试后,经过几分钟加载符号信息,终于附加成功
下断点,操作开发板上手工测试demo,使程序正好运行到断点所在地方
断点断住了,堆栈,局部变量,寄存器,汇编窗口工作正常。
其他
这里有其他人eclipse+cdt远程调试教程,可以参考,只需要把调试配置中gdb改为gdb-multiarch即可
EclipseCDT远程交叉编译&远程单步调试&基于makefile例程
VSCode也可以远程调试,这里是我launch.json调试配置
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/../../../out/rk3568/customization/enterprise_device_management/libedmservice_kits.z.so",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": "172.20.10.10:1234"
}
]
}
VSCode调试教程可参考