目录

三方库源码调试

三方共享包分为静态共享包HAR和动态共享包HSP,两种共享包的源码调试方式有所区别,具体请查看以下指导。

区分字节码HAR和源码HAR

HAR包分为字节码HAR和源码HAR,同时满足以下两个条件的是字节码HAR,否则是源码HAR,更多关于如何构建源码HAR和字节码HAR的指导请查看构建HAR。

  1. 查看HAR包的ets目录下存在.abc文件。
  2. 查看HAR包的oh-package.json5文件,存在byteCodeHar字段并且值为true。

字节码HAR调试

[h2]C++代码调试

如果HAP/HSP引用字节码HAR包,同时HAR包中包含C++代码,参考以下步骤对该HAR包进行调试。

  1. 点击Run > Edit Configurations > Debugger > Symbol Directories页签,点击+,添加带调试信息的so文件,so文件在{ProjectPath}/{ModuleName}/build/{product}/intermediates/libs/default/arm64-v8a路径下。

    在工程级或模块级build-profile.json5中添加strip字段并设置为false,可以生成带调试信息的so文件,具体请参考配置CPP。

  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++源码进行关联。

[h2]ArkTS代码调试

假如在工程A(HAR包工程)中以debug模式编译得到字节码HAR包,工程B(主工程)中引用该字节码HAR包,并且本地有HAR包的源码,要调试该字节码HAR,有两种方式:在主工程中调试或在HAR包工程中调试。

release模式编译的字节码HAR不支持调试。

源码HAR调试

[h2]C++代码调试

如果HAP/HSP引用源码HAR包,同时HAR包中包含C++代码,可参考字节码HAR进行调试。

[h2]ArkTS代码调试

工程中引用源码HAR包,对该HAR包进行调试,根据本地是否有源码,调试方式分别如下:

HSP源码调试

如果要调试HSP源码,需要将源码置于本地工程模块下,参考字节码HAR的方式一进行调试。