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

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

被折叠的 条评论
为什么被折叠?



