OpenHarmony系统使用gdb调试launcher应用程序

文章讲述了在OpenHarmony系统中,当launcher应用出现崩溃并成为僵尸进程时,如何通过cppcrash日志初步判断问题,并使用gdb进行调试。涉及修改appspawn代码以延缓应用启动,延长进程保护时间,以及处理系统镜像无符号信息的问题,以便进行有效的调试操作。

OpenHarmony在适配新的某型开发板时,遇到了launcher应用崩溃的现象,主要表现为:ps –ef查看进程列表,发现launcher进程成为僵尸进程,再次查询进程列表时,launcher进程已经消失。

在hilog日志中搜索com.ohos.launcher,发现了和launcher进程相关的cppcrash日志


初步确认,launcher应用在启动过程中崩溃,SIGSEGV表示是因为段错误退出,出错的位置是在ld-musl-x86_64.so.1中,但日志无法看出程序崩溃的具体位置。针对这种情况,可以用gdb调试launcher进程,在进程崩溃时查看调试栈定位到出错的具体位置。

调试代码修改

HAP应用在初始化过程中由系统拉起,需要延缓其启动过程,方便使用gdb工具进程跟踪调试,修改下述部分代码,以方便gdb的使用。(以下代码在OpenHarmony 3.2Beta3版本上验证,红色字体表示增加,蓝色字体表示修改)

1.修改appspwn的代码让应用启动慢一些,防止应用快速退出,导致无法输入gdb命令。

/base/startup/appspawn/standard/appspawn_process.cstatic int SetProcessName(struct AppSpawnContent_ *content, AppSpawnClient *client,char *longProcName, uint32_t lo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值