0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony系统使用gdb调试init

电子发烧友开源社区 来源:未知 2022-12-26 12:10 次阅读
OpenHarmony适配新的开发板时,启动流程init大概率会出现问题,其为内核直接拉起的第一个用户态进程,问题定位手段只能依赖代码走读和增加调试打印,初始化过程中系统崩溃的问题就更难定位了。如果能使用gdb调试init,会极大的提高定位效率。 本文简单描述了一下L2二次启动的系统如何使用gdb调试init
  1. 首先将gdb打包到系统镜像中。
Init不正常的情况下,系统无法正常启动工作,无法使用hdc工具加载gdb工具,所以直接在制做镜像时,将其打包到系统镜像bin目录下。如下图:985906b2-84d2-11ed-bfe3-dac502259ad0.png  2. 调试版本镜像带符号,需要修改镜像配置文件,改大其大小限制。尤其是system.img,编译失败时不会提示实际镜像大小,需要修改到5G以上。987359cc-84d2-11ed-bfe3-dac502259ad0.png  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处。 988ad886-84d2-11ed-bfe3-dac502259ad0.png注意:A处的CloseStdio()需要注释掉 考虑用gdb启动init第二阶段,init绝大部分处理流程都在这一阶段,从这里开始就可以用gdb调试了,init第一阶段处理相对而言流程简单一些,代码走读和调试打印基本就能解决问题。 5. 在init主函数中去掉“不等于进程1就返回的处理”,因为用gdb起init第二阶段时,其进程非1。989b04cc-84d2-11ed-bfe3-dac502259ad0.png  6. init进程中不初始化Paramworkspace,前面pid=1的判断,在gdb调试init时条件不成立,所以此处增加判断init名就直接退出的处理。98b536f8-84d2-11ed-bfe3-dac502259ad0.png  7. 系统启动,init初始化第一阶段完成后,会停在shell 下,此时使用下述命令启动init第二阶段:gdb --args /bin/init --second-stage为了调试init的子进程,还需要gdb下述命令set follow-fork-mode child98ca0646-84d2-11ed-bfe3-dac502259ad0.png  当前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

    文章

    556

    浏览量

    33094
  • 开源社区
    +关注

    关注

    0

    文章

    94

    浏览量

    479

原文标题:OpenHarmony系统使用gdb调试init

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于ArkTS语言的OpenHarmony APP应用开发:HelloOpenharmony

    1、程序简介该程序是基于OpenHarmony标准系统编写的UI应用类:HelloOpenHarmony。本案例是基于API9接口开发。本案例已在OpenHarmony凌蒙派-RK35
    的头像 发表于 09-15 08:09 466次阅读
    基于ArkTS语言的<b class='flag-5'>OpenHarmony</b> APP应用开发:Hello<b class='flag-5'>Openharmony</b>

    【开源鸿蒙】使用QEMU运行OpenHarmony轻量系统

    本文将会介绍如何从源码安装QEMU 6.2.0,以及如何使用QEMU运行OpenHarmony轻量系统。通过本文,你将会对QEMU和OpenHarmony轻量系统又一个初步的认知,并对
    的头像 发表于 09-14 08:51 729次阅读
    【开源鸿蒙】使用QEMU运行<b class='flag-5'>OpenHarmony</b>轻量<b class='flag-5'>系统</b>

    ESP32-C3使用命令行GDB调试出现报错的原因?

    = 0;void led_init(){ gpio_reset_pin(LED); gpio_set_direction(LED, GPIO_MODE_OUTPUT);}void led_blink
    发表于 08-01 07:47

    鸿蒙OpenHarmony南向/北向快速开发教程-迅为RK3568开发板

    4.1学习之旅了吗?快来加入我们,一起探索鸿蒙4.1系统的无限魅力吧! 【北京迅为】OpenHarmony学习开发系列教程(第1期 北向基础篇一) P0_先导课 P1_OpenHarmony
    发表于 07-23 10:44

    开源鸿蒙 编译OpenHarmony轻量系统QEMU RISC-V版本

    本文将介绍如何为QEMU RISC-V虚拟平台构建OpenHarmony轻量系统。得益于QEMU的CPU指令集模拟执行能力,该方法可以在没有开发板的情况下调试和运行OpenHarmony
    的头像 发表于 07-15 10:36 1157次阅读
    开源鸿蒙 编译<b class='flag-5'>OpenHarmony</b>轻量<b class='flag-5'>系统</b>QEMU RISC-V版本

    为什么无法使用esp-gdbstub调试esp8266?

    /应用.输出 (gdb) 设置远程硬件断点限制 1 (gdb) 设置远程硬件观察点限制 1 (gdb) 设置调试 xtensa 4 (gdb
    发表于 07-11 08:24

    是否有可能在支持gdb的第三方集成开发环境中使用DAS配置调试

    是否有可能在支持 gdb 的第三方集成开发环境中使用 DAS 配置调试
    发表于 07-02 07:29

    OpenHarmony之开机优化

    OpenHarmony已经支持了Bootchart工具,我们可以直接使用Bootchart工具,Bootchart工具介绍如下: 概述 Bootchart是一个用于系统启动过程性能分析的开源软件工具
    发表于 07-01 16:39

    rtt调试时出警告

    我在用rtt thread studio进行调试时,报如下警告: Open On-Chip Debugger 0.11.0+dev-02215-gcc0ecfb6d-dirty
    发表于 06-29 19:11

    使用GDB OpenOCD调试程序进行调试时,DAP \"CYW20820A1.cpu初始化失败的原因?

    我使用 Modus 工具箱导入了一个 AUDIO WATCH 示例。 成功构建后,当我尝试使用 GDB OpenOCD 调试程序进行调试时,得到如下错误信息: 所有跳线设置均为默认值。 信息:自动
    发表于 05-21 07:30

    使用VSCode调试嵌入式程序:如何切换gdb server

    上文小编给大家介绍了一下如何使用VSCode结合cortex-debug插件进行调试的方法。本篇就趁热打铁,进一步深入了解一下如何切换gdb server。让我们可以不仅仅使用JLinkGDBServer进行调试
    的头像 发表于 05-09 11:02 2440次阅读
    使用VSCode<b class='flag-5'>调试</b>嵌入式程序:如何切换<b class='flag-5'>gdb</b> server

    OpenHarmony开发实例:【配置应用签名信息】

    使用真机设备运行和调试OpenHarmony应用前,需要对应用进行签名才能正常运行。
    的头像 发表于 04-22 16:52 530次阅读
    <b class='flag-5'>OpenHarmony</b>开发实例:【配置应用签名信息】

    PLC系统的安装与调试流程

    PLC控制系统的安装与调试,涉及到各项工作,并且只能按序进行,一环紧扣一环,稍有不慎都将导致调试失败,不但延误工期,甚至会损坏设备。本文介绍了在现场实践中总结出的PLC控制系统的安装与
    的头像 发表于 03-27 17:08 901次阅读
    PLC<b class='flag-5'>系统</b>的安装与<b class='flag-5'>调试</b>流程

    OpenHarmony内核编程实战

    编写程序,让开发板在串口调试工具中输出”Hello,OpenHarmony“。▍操作在源码的根目录中有名为”applications“的文件,他存放着应用程序样例
    的头像 发表于 03-27 08:31 932次阅读
    <b class='flag-5'>OpenHarmony</b>内核编程实战

    为什么VSCODE使用GDB调试不显示寄存器?

    VSCODE使用GDB调试不显示寄存器
    发表于 02-22 06:46