通过configuration配置调试so

已有应用hap包entry-default-signed.hap,hap包包名com.example.soliba 要调试的三方源码so(需携带调试信息)liblocalso.so和其hello.cpp源码文件。

HarmonyOS
2024-05-28 22:14:09
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
好难的昵称

详细步骤

1、基于本地C++代码构建生成新so库。demo见solibA; solibA做了如下操作:

a、新建solibA工程,新建C++模块取名为localso;在localso的hello.cpp中定义方法并打多个断点;build编译生成so,路径solibA\localso\build\default\intermediates\libs\default\arm64-v8a

b、将arm64-v8a文件夹复制到entry-libs下,即entry\libs\arm64-v8a\liblocalso.so

c、在entry的build-profile.json5下设置编译选项,"abiFilters" : ["arm64-v8a"],即 "externalNativeOptions": { "path": "./src/main/cpp/CMakeLists.txt", "arguments": "", "cppFlags": "", "abiFilters" : ["arm64-v8a"] }

d:entry增加头文件apple.h,写入方法 int getvalue_local(); int add_local(int a, int b);

e:entry的hello.cpp调用方法 #include "apple.h" int value_b = getvalue_local(); value_b += add_local(1,2) + add_local(3, 4);

f、签名,编译entry,在solibA\entry\build\default\outputs\default目录下生成hap包entry-default-signed.hap

2、通过命令将entry-default-signed.hap运行到设备并拉起,参考 hdc install entry-default-signed.hap hdc shell aa start -a EntryAbility -b com.example.soliba

3、打开demo2工程,demo2做了如下操作

a、在entry的build-profile.json5下设置编译选项,"abiFilters" : ["arm64-v8a"]

b、进到entry的configuration配置,选择Debugger页签,点击Symbol Directories页签下的+号添加liblocalso.so,路径到arm64-v8a,即C:\Users\......\solibA\localso\build\default\intermediates\libs\default\arm64-v8a 保存configuration (若是复用demo工程,那么每次重新打开demo2需要删除Symbol Directories配置然后重新添加,因为此处没有做持久化)

4、demo2工程选中entry,build编译,签名,点击attach,勾选Show all processes,选择com.example.soliba,OK;

设备上点击控件触发调用关系,会打开源码文件即localso的hello.cpp,可进入断点进行调试;点Step Over执行到下一行、点Resume Program执行到下一个断点、点Step Into进到汇编

分享
微博
QQ
微信
回复
2024-05-29 23:27:45
相关问题
如何调试引用的外部so
797浏览 • 1回复 待解决
在Camkelist配置so后,编译报错
743浏览 • 1回复 待解决
支持调试本地源码无法编译的so
716浏览 • 1回复 待解决
har包集成怎么配置so的架构
396浏览 • 1回复 待解决
HarmonyOS 如何通过dlopen的方式加载so
52浏览 • 1回复 待解决
native如何通过命令行编译成so
2539浏览 • 1回复 待解决
. > An error occur in configuration.
6135浏览 • 1回复 待解决
openssl.so和ffrt.so异常日志分析
895浏览 • 1回复 待解决