鸿蒙三方库源码调试

发布时间:2026/11/3 2:52:22
鸿蒙三方库源码调试 项目中引入三方库后线上出问题想进源码看看却发现断点打不进去一、先分清字节码HAR vs 源码HARHAR 包分为字节码 HAR和源码 HAR判断标准是同时满足以下两个条件即为字节码 HAR否则是源码 HAR条件说明1查看 HAR 包的ets目录下存在abc文件2查看 HAR 包的oh-package.json5文件存在byteCodeHar字段并且值为true二、字节码HAR调试2.1 C代码调试如果 HAP/HSP 引用字节码 HAR 包同时 HAR 包中包含C 代码按以下步骤调试步骤1添加带调试信息的 so 文件点击Run Edit Configurations Debugger页签点击添加带调试信息的 so 文件so 文件路径[ProjectPath]/[ModuleName]/build/{product}/intermediates/libs/default/arm64-v8a说明在工程级或模块级build-profile.json5中添加strip字段并设置为false可以生成带调试信息的 so 文件。步骤2关联源码文件DevEco Studio 调试时会优先加载配置的 so 文件本地 so 文件包含调试信息时可以正常调试源码。但 so 的源码文件信息为编译时的文件路径若与本地的源码文件路径不一致需要关联源码文件有两种方式方式操作方式一在LLDB Startup Commands页签中添加命令做映射settings set -- target.source-map {old-path} {new-path}•old-path编译时的文件路径•new-path本地的源码文件路径方式二当Step Into 进入汇编代码后会弹出源码关联的提示点击Select file选择本地对应 C 源码进行关联2.2 ArkTS代码调试字节码 HAR 的 ArkTS 调试提供两种方式方式一在主工程中调试在主工程中导入字节码 HAR 对应的模块确保模块的层级目录与 HAR 包工程的保持一致例如 HAR 模块都在工程根目录下导入成功后由于 debug 模式编译的字节码 HAR 中包含sourceMap调试时默认会关联当前工程的源码此时可以在 HAR 模块上直接添加断点方式二在 HAR 包工程中调试通过修改前缀配置进行 attach 调试步骤操作1在 HAR 包工程新建一个entry 类型的 demo 主模块如已存在则跳过2在 demo 主模块的oh-package.json5中配置对字节码 HAR 包的依赖3在 HAR 包工程主模块中调用 HAR 模块的接口确保编译后主模块的 sourceMap 文件中包含 HAR 模块的相关信息4构建 HAR 包工程打开主模块的 sourceMap根据 HAR 的oh-package.json5中的name进行查找将Index 文件的前缀路径记录为localUrl5主工程应用在设备上运行后在 HAR 包工程中通过attach方式调试在 Debug 窗口获取程序加载时的前缀记录为remoteUrl6点击Run Edit Configurations Debugger ArkTS Source Pairs点击填写remoteUrl和localUrl7在 HAR 包工程中重新通过 attach 方式对主工程应用进行调试此时可以在 HAR 模块上添加断点进行调试步骤2的依赖配置示例// demo 主模块的 oh-package.json5 dependencies: { ohos/test_stage_ets_library: file://lib/test_stage_ets_library.har, }说明如果在 demo 主模块的oh-package.json5中配置对字节码 HAR 模块的依赖为file:../test_stage_ets_library调试时可能导致断点无效。步骤6的两个 URL 含义字段含义remoteUrl应用程序加载 HAR 包的前缀路径localUrl本地生成 sourceMap 中 HAR 的前缀路径说明如果在 HAR 包工程中同时配置Symbol Directories和ArkTS Source Pairs可同时 attach 调试ArkTS 和 C 断点。三、源码HAR调试3.1 C代码调试如果 HAP/HSP 引用源码 HAR 包同时 HAR 包中包含 C 代码可参考字节码 HAR 的 C 调试方式进行调试。3.2 ArkTS代码调试工程中引用源码 HAR 包对该 HAR 包进行调试根据本地是否有源码调试方式分别如下情况一本地没有对应源码应用构建打包时引用的源码来源是工程级oh_modules目录下的源码只能针对oh_modules下的源码进行调试情况二本地有对应源码调试时可关联本地源码以实现对源码的调试有两种方式方式操作方式一参考字节码 HAR 调试的方式方式二当Step Into 进入oh_modules中的 ets 代码后会弹出源码关联的提示点击Choose Sources选择本地对应 ets 源码进行关联四、HSP源码调试如果要调试 HSP 源码需要将源码置于本地工程模块下参考字节码 HAR 的方式一进行调试建议首次调试三方库先按两个条件确认是字节码还是源码 HARArkTS 断点打不进去优先试方式一主工程直接打断点不行再走方式二配 Source PairsC 断点不生效检查strip是否设为falseso 路径对不对必要时用target.source-map映射依赖路径别写错用file://lib/xxx.har别用file:../xxx如果调试时发现断点显示为空心圆未绑定大概率是sourceMap 路径映射没对上重点排查remoteUrl和localUrl是否配置正确。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询