如何调试引用的外部so

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

HarmonyOS
2024-05-28 22:12:41
浏览
已于2024-5-28 22:13:27修改
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
chjie1

本地环境构造

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

详细步骤

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的buildOption下设置编译选项,"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、打开demo1工程 demo1做了如下操作

a、在entry的build-profile.json5下设置编译选项,"abiFilters" : ["arm64-v8a"] (arm64-v8a代表64位,对应原型机和部分rk的设备,如果编译类型不一致,编译会报错;armeabi-v7a代表32位,根据设备实际系统位数配置)

b、添加三方so库到demo1\entry\libs\arm64-v8a\liblocalso.so c:将源码文件hello.cpp拖到demo1中打开,并在相关行打多个断点

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

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

分享
微博
QQ
微信
回复
2024-05-29 23:26:56
相关问题
通过configuration配置调试so
355浏览 • 1回复 待解决
支持调试本地源码无法编译so
340浏览 • 1回复 待解决
docker 如何挂载外部文件?
2970浏览 • 1回复 待解决
外部调用har里方法,如何跳转页面
570浏览 • 1回复 待解决
匿名内部类如何更新外部变量
398浏览 • 0回复 待解决
如何引用非本地目录HSP
487浏览 • 1回复 待解决
如何编译底层so有懂吗?
1016浏览 • 1回复 待解决
如何编译鸿蒙使用libcurl.so
355浏览 • 1回复 待解决
java如何引用resources资源获得value?
3253浏览 • 1回复 待解决
求大佬告知如何引用HSP库
764浏览 • 1回复 待解决
DevEco Studio开发如何引入.so
8968浏览 • 1回复 待解决
ArkTS项目如何调用已有SO库?
326浏览 • 1回复 待解决
如何在Native层加载so
441浏览 • 1回复 待解决