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打包到系統鏡像中。


./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處。




- 玩轉OpenHarmony PID:教你打造兩輪平衡車
- 基于SDIO協議的WiFi模塊實現指南
- ArkUI框架,更懂程序員的UI信息語法
- 帶你玩轉OpenHarmony AI:基于Seetaface2的人臉識別
-
帶你玩轉OpenHarmony AI:打造智能語音子系統
提示:本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。
原文標題:OpenHarmony系統使用gdb調試init
文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
電子發燒友
+關注
關注
33文章
565瀏覽量
33489 -
開源社區
+關注
關注
0文章
95瀏覽量
619
原文標題:OpenHarmony系統使用gdb調試init
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
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
Dali通信系統的調試指南
調試通信系統是一個復雜的過程,涉及到對系統性能的測試、故障排除和優化。以下是一個關于調試Dali通信系統的指南,假設Dali是一個特定的通信
嵌入式工程師都在找的【Linux內核調試技術】建議收藏!
,調試過程中被調試的內核運行在目標機上,GDB調試器運行在開發機上。
使用KDB進行Linux內核調試
案例背景
假設我們正在開發一個
發表于 11-28 15:37
基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony
1、程序簡介該程序是基于OpenHarmony標準系統編寫的UI應用類:HelloOpenHarmony。本案例是基于API9接口開發。本案例已在OpenHarmony凌蒙派-RK35

【開源鴻蒙】使用QEMU運行OpenHarmony輕量系統
本文將會介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運行OpenHarmony輕量系統。通過本文,你將會對QEMU和OpenHarmony輕量系統又一個初步的認知,并對

[2K300適配OpenharmonyV4.1]根文件系統制作請教
的文件系統rootfs.img燒錄到2k300上,燒錄失敗。對比2k300開源資料中的Openharmony 文件系統,該文件系統為ext4格式,但是2k500編譯出來的為Ubifs
發表于 09-11 11:18
【迅為RK3568開發板】OpenHarmony學習開發系列教程(第1期 北向基礎篇一)
P1P0_先導課1:30
P2P1_OpenHarmony系統概述8:12
P3P2_OpenHarmony功能框架5:38
P4P3_OpenHarmony技術特性5:10
發表于 08-16 15:27
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
RISC-V 匯編語言程序的調試
,通過jr t0跳入。
模擬器執行與調試
下面通過編譯為32位的代碼來看一下程序的執行過程(由于程序不需要任何操作系統的支持,會容易跑偏,所以要用遠程gdb進行單條指令執行,觀察寄存器的執行情況
發表于 07-19 16:27
開源鴻蒙 編譯OpenHarmony輕量系統QEMU RISC-V版本
本文將介紹如何為QEMU RISC-V虛擬平臺構建OpenHarmony輕量系統。得益于QEMU的CPU指令集模擬執行能力,該方法可以在沒有開發板的情況下調試和運行OpenHarmony

為什么無法使用esp-gdbstub調試esp8266?
/應用.輸出
(gdb) 設置遠程硬件斷點限制 1
(gdb) 設置遠程硬件觀察點限制 1
(gdb) 設置調試 xtensa 4
(gdb
發表于 07-11 08:24
評論