HarmonyOS鸿蒙Next中C++调试总是失败

HarmonyOS鸿蒙Next中C++调试总是失败 我在支持C++的项目里进行调试,总是报错:

Failed connect to unix-abstract-connect://[${SN}]/${bundle name}/platform-1770737825709.sock: Connection shut down by remote side while waiting for reply to initial handshake packet

cke_292.png

之前调试是正常的,突然就报这个错误了,官网说的以下三个方法我都试了。

  1. 如果设备镜像与DevEco Studio版本不匹配,请尝试更换设备镜像版本以解决问题。
  2. 签名使用了release证书,请更换为debug证书。
  3. 到设备路径 /data/local/tmp/debugserver/ 下,删除与应用包名相同的文件夹。

 设备是nova12 pro,系统是6.0.0.130,API版本是6.0.2(22),DevEco Studio是DevEco Studio 6.0.2 Release,签名也是debug证书,这个/data/local/tmp/debugserver/下的应用包名文件夹也删除了,还是不能调试,只能直接运行。

最奇怪的是,我换编译器自带的虚拟机就可以正常调试了,真机就无法调试。

cke_21797.png


更多关于HarmonyOS鸿蒙Next中C++调试总是失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

【解决方案】

开发者您好,可以尝试以下方式解决:

1、更换其他真机设备尝试是否可以正常调试。

2、如果没有其他设备,则到问题设备路径 /data/local/tmp/debugserver/ 下,删除与应用包名相同的文件夹。然后重启设备,再尝试调试看看。

若不能解决您的问题,欢迎您再次反馈。

更多关于HarmonyOS鸿蒙Next中C++调试总是失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


1、我只有一台华为的鸿蒙手机,但我有一台OpenHarmony的真机,可以正常调试。 2、这个文件夹已经删除多次了,系统也重启多次了,还是无法调试。

在数位官方工程师一个下午的精心帮助下,这个问题终于解决了。

原因如下:

我的项目build-profile.json5文件之前使用了"runtimeOS": "OpenHarmony"的运行时配置进行了调试运行,编译器将OpenHarmony的lldb调试器上传给了我nova12 pro系统里,结果我后来再修改为"runtimeOS": "HarmonyOS"时,编译器就没有再将HarmonyOS的lldb调试器上传给系统,然而HarmonyOS系统会对lldb调试器做检测,如果发现不是HarmonyOS的lldb调试器,就会禁止该调试器运行,所以就导致编译器无法启动lldb调试器从而导致无法进行C++调试。

解决方法如下:

将build-profile.json5文件的"runtimeOS"改为"HarmonyOS",同步项目,清理项目,删除系统里的/data/local/tmp/debugserver/与应用包名相同的文件夹,重启系统,重新编译器项目,再调试运行就可以了。

建议如下:

  1. 既然lldb调试器是和目标系统有关的,和项目的运行时其实无关,那么编译器应该根据目标系统来上传对应的lldb调试器,而不是根据runtimeOS配置来上传。
  2. 这个报错非常不友好,官方工程师都无法根据这个报错来直接定位问题,编译器应该优化这个报错提示,最好能做一个检测lldb调试器的机制进去,发现调试器不对就重新上传。
  3. 为什么要区分这个lldb调试器对HarmonyOS还是OpenHarmony,能不能统一用一个lldb调试器呢?

最后再次感谢数位官方工程师的帮助!

在数位官方工程师一个下午的精心帮助下,这个问题终于解决了。

原因如下:

我的项目build-profile.json5文件之前使用了"runtimeOS": “OpenHarmony"的运行时配置进行了调试运行,编译器将OpenHarmony的lldb调试器上传给了我nova12 pro系统里,结果我后来再修改为"runtimeOS”: "HarmonyOS"时,编译器就没有再将HarmonyOS的lldb调试器上传给系统,然而HarmonyOS系统会对lldb调试器做检测,如果发现不是HarmonyOS的lldb调试器,就会禁止该调试器运行,所以就导致编译器无法启动lldb调试器从而导致无法进行C++调试。

解决方法如下:

将build-profile.json5文件的"runtimeOS"改为"HarmonyOS",同步项目,清理项目,删除系统里的/data/local/tmp/debugserver/与应用包名相同的文件夹,重启系统,重新编译器项目,再调试运行就可以了。

建议如下:

1、既然lldb调试器是和目标系统有关的,和项目的运行时其实无关,那么编译器应该根据目标系统来上传对应的lldb调试器,而不是根据runtimeOS配置来上传。

2、这个报错非常不友好,官方工程师都无法根据这个报错来直接定位问题,编译器应该优化这个报错提示,最好能做一个检测lldb调试器的机制进去,发现调试器不对就重新上传。

3、为什么要区分这个lldb调试器对HarmonyOS还是OpenHarmony,能不能统一用一个lldb调试器呢?

最后再次感谢数位官方工程师的帮助!

鸿蒙Next中C++调试失败可能涉及开发环境配置、SDK版本兼容性或调试器设置问题。请检查DevEco Studio是否为最新版本,确保项目配置的SDK与设备系统版本匹配。同时,确认C++运行库已正确集成,调试符号文件完整。

这个问题通常与真机调试环境下的连接或权限问题有关。根据你提供的信息,既然在模拟器上调试正常,而真机(nova12 pro)失败,且已排除官方文档中提到的常见原因,可以重点关注以下几点:

  1. ADB连接稳定性:请确保USB连接稳定,尝试更换数据线或USB端口。在终端执行 adb devices 确认设备已稳定连接且状态为 device。可以尝试重启ADB服务(adb kill-serveradb start-server)并重新连接设备。

  2. 开发者选项与USB调试:进入手机的“设置 > 关于手机”,连续点击“HarmonyOS版本”以启用开发者选项。然后进入“设置 > 系统和更新 > 开发人员选项”,确认“USB调试”开关已开启。有时需要关闭后重新打开,或撤销USB调试授权后重新连接授权。

  3. 网络与防火墙干扰:错误信息涉及socket连接,部分电脑安全软件或防火墙可能拦截ADB或调试端口的通信。尝试临时禁用防火墙或安全软件,并确保电脑与手机处于同一稳定的网络环境(避免使用公司受限网络)。

  4. 清理项目与重建:在DevEco Studio中执行 File > Invalidate Caches and Restart,清理缓存并重启。同时删除项目目录下的 buildoh_modules 等生成文件夹,以及 AppScope/resources/base/profile 下的 main_pages.json 文件(如有),然后重新同步(Sync)和构建(Build)。

  5. 调试器残留进程:在真机上完全卸载当前应用,并重启手机。这可以确保旧的调试socket被彻底清除。卸载后重新安装调试版本。

  6. 检查真机系统版本兼容性:你的设备系统(6.0.0.130)与API版本(6.0.2(22))和DevEco Studio(6.0.2 Release)在版本号上是对应的,但可能存在细微的底层差异。可以尝试将DevEco Studio更新至最新发布的补丁版本,或检查是否有针对该型号设备的已知调试问题。

如果上述步骤仍无法解决,问题可能指向真机系统层面的临时缺陷。可以尝试备份数据后,将手机系统升级到最新的可用版本(如6.0.0.13x的后续版本),有时系统更新会修复底层的调试服务问题。

回到顶部