OpenHarmony适配新的开发板时,启动流程init大概率会出现问题,其为内核直接拉起的第一个用户态进程,问题定位手段只能依赖代码走读和增加调试打印,初始化过程中系统崩溃的问题就更难定位了。如果能使用gdb调试init,会极大的提高定位效率。
本文简单描述了一下L2二次启动的系统如何使用gdb调试init
2. 调试版本镜像带符号,需要修改镜像配置文件,改大其大小限制。尤其是system.img,编译失败时不会提示实际镜像大小,需要修改到5G以上。
3.编译调试版本,打开版本调试开关
注意:A处的CloseStdio()需要注释掉
考虑用gdb启动init第二阶段,init绝大部分处理流程都在这一阶段,从这里开始就可以用gdb调试了,init第一阶段处理相对而言流程简单一些,代码走读和调试打印基本就能解决问题。
5. 在init主函数中去掉“不等于进程1就返回的处理”,因为用gdb起init第二阶段时,其进程非1。
6. init进程中不初始化Paramworkspace,前面pid=1的判断,在gdb调试init时条件不成立,所以此处增加判断init名就直接退出的处理。
7. 系统启动,init初始化第一阶段完成后,会停在shell 下,此时使用下述命令启动init第二阶段:gdb --args /bin/init --second-stage为了调试init的子进程,还需要gdb下述命令set follow-fork-mode child
当前gdb调试init方法不适用L0、L1和一次启动的L2系统。
本文章针对OpenHarmony系统在调试init初始化流程时,缺少高效的问题定位手段这一痛点,引入了嵌入式系统开发的主流调试工具-gdb。详细描述了这一方法涉及到的版本编译、适配点修改以及调试命令操作等细节处理,指导开发者提高定位init问题的效率。需要注意,当前gdb调试init方法有局限,不适用L0、L1和一次启动的L2系统。
更多热点文章阅读
- 首先将gdb打包到系统镜像中。
2. 调试版本镜像带符号,需要修改镜像配置文件,改大其大小限制。尤其是system.img,编译失败时不会提示实际镜像大小,需要修改到5G以上。
3.编译调试版本,打开版本调试开关
./build.sh --product-name=ita260 --gn-args="is_debug=true use_unstripped_as_runtime_outputs=true"
4. 在init挂载好system、vendor等镜像,并将根目录切换到system镜像后,在启动第二阶段init时,切换到shell下,停止init初始化流程,见下图B处。
注意:A处的CloseStdio()需要注释掉
考虑用gdb启动init第二阶段,init绝大部分处理流程都在这一阶段,从这里开始就可以用gdb调试了,init第一阶段处理相对而言流程简单一些,代码走读和调试打印基本就能解决问题。
5. 在init主函数中去掉“不等于进程1就返回的处理”,因为用gdb起init第二阶段时,其进程非1。
6. init进程中不初始化Paramworkspace,前面pid=1的判断,在gdb调试init时条件不成立,所以此处增加判断init名就直接退出的处理。
7. 系统启动,init初始化第一阶段完成后,会停在shell 下,此时使用下述命令启动init第二阶段:gdb --args /bin/init --second-stage为了调试init的子进程,还需要gdb下述命令set follow-fork-mode child
当前gdb调试init方法不适用L0、L1和一次启动的L2系统。
本文章针对OpenHarmony系统在调试init初始化流程时,缺少高效的问题定位手段这一痛点,引入了嵌入式系统开发的主流调试工具-gdb。详细描述了这一方法涉及到的版本编译、适配点修改以及调试命令操作等细节处理,指导开发者提高定位init问题的效率。需要注意,当前gdb调试init方法有局限,不适用L0、L1和一次启动的L2系统。
更多热点文章阅读- 玩转OpenHarmony PID:教你打造两轮平衡车
- 基于SDIO协议的WiFi模块实现指南
- ArkUI框架,更懂程序员的UI信息语法
- 带你玩转OpenHarmony AI:基于Seetaface2的人脸识别
-
带你玩转OpenHarmony AI:打造智能语音子系统
提示:本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。
原文标题:OpenHarmony系统使用gdb调试init
文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
电子发烧友
+关注
关注
33文章
584浏览量
33980 -
开源社区
+关注
关注
0文章
95浏览量
775
原文标题:OpenHarmony系统使用gdb调试init
文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
ElfBoard技术贴|如何在【RK3588】ELF 2开发板进行GDB调试
GDB(GNU Project Debugger)是在Linux环境下功能全面的调试工具。它提供了一系列强大的调试功能,包括设置断点、单步执行、打印与观察变量、查看寄存器及堆栈信息等。在Linux软件开发的实践中,
蜂鸟的GDB调试时无法在断点处停止是什么原因?
各位大佬们,我们使用GDB调试程序的时候,在main函数打上断点,然后在gdb中continue,程序并没有在main函数入口处停下?请问大佬知道原因吗?谢谢~
发表于 11-07 06:15
RV-STAR无法连接到GDB server的解决办法
demo跑一跑,现在卡在了“下载程序到开发板”这一步,connect to gdb server失败,使用的是板载调试器。请问这是什么情况?
具体信息如下:
1. 我已经安装
发表于 11-07 06:15
【技术分享】正确编写SysV Init脚本以实现Systemd兼容(上)
嵌入式的ubuntu系统如何写好SysVInit脚本呢?与system服务又有什么差别呢?一起随着文章来探究吧。问题背景许多传统Linux服务仍使用SysVInit脚本(/etc/init
使用蜂鸟调试器,无法用cjtag协议调试CM32M433R芯片怎么解决?
器jtag端口,到CM32M433R-START开发板上MCU的jtag调试端口。在jtag和cjtag调试中,都连接GND,TCK,TMS,TDI,TDO五条线,没有连接RST线
开发环境
系统
发表于 10-20 07:31
【干货分享】RT-Trace国产调试工具 | 技术集结
专为嵌入式开发者打造的一款高性能、多功能的调试工具。它集成了实时系统跟踪、数据监控、GDB远程调试、Flash程序烧录、虚拟终端等多种功能于一体,支持通过WebU
国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—GDB程序调试方法说明
(Linux) GDB工具是GNU项目调试器,基于命令行使用。和其他的调试器一样,可使用GDB工具单步运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是UNIX/LINU
【M-K1HSE开发板免费体验】OpenHarmony系统体验与调试串口连接
系统体验使用电源供电上电即可启动时显示LOGO显示OpenHarmony进入桌面 消息中心 桌面设备信息 Wifi连接,要接好天线否则信号不好 浏览器 音乐播放 相机 系统更新 整个体验下来
发表于 07-18 23:48
STM32CubeIDE无法启动正常调试是哪里出了问题?
STM32CubeIDE始终正常使用中,昨日系统升级为 macOS Sequoia 版本,启动调试出现错误提示,重新安装应用程序及 st-stlink-server 驱动,仍提示同样错误。
目前
发表于 03-14 16:30
为什么会报错Could not determine GDB version using command: arm-none-eabi-gdb --version?
我已经重启电脑了,没用;
重装软件没有,没有;
将ST_link_server卸载重装也没有;
将arm-none-eabi-gdb加入windows 11系统环境变量,也没用;
将软件的GDB
发表于 03-12 08:08
蜂鸟板上Openharmony系统跑QT程序
将QT程序放到Openharmony系统上跑,可以运行,但是会被覆盖掉。(用的网盘里面的install,支持QT组件的版本)。
运行情况是,在终端运行QT程序,可以正常运行出来,但是触摸屏幕后,会被Openharmony操作界面
发表于 02-26 13:04
挑战6万月薪【二】Purple Pi OH开发板带你7天入门OpenHarmony!
经过上一次的学习,我们已经初步了解了PurplePiOH,并完成了OpenHarmonyOS的烧录,接下来请各位小白跟着笔者的步骤,完成配件的连接,让系统变得“可视化”,与OpenHarmony亲密
Dali通信系统的调试指南
调试通信系统是一个复杂的过程,涉及到对系统性能的测试、故障排除和优化。以下是一个关于调试Dali通信系统的指南,假设Dali是一个特定的通信
自动控制系统的调试方法 自动控制系统与传统控制系统的比较
自动控制系统的调试方法 自动控制系统的调试是一个复杂的过程,涉及到对系统性能的测试和优化。以下是一些基本的

OpenHarmony系统使用gdb调试init
评论