OpenHarmony適配新的開發板時,啟動流程init大概率會出現問題,其為內核直接拉起的第一個用戶態進程,問題定位手段只能依賴代碼走讀和增加調試打印,初始化過程中系統崩潰的問題就更難定位了。如果能使用gdb調試init,會極大的提高定位效率。
本文簡單描述了一下L2二次啟動的系統如何使用gdb調試init
- 首先將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處。
注意: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文章
549瀏覽量
32929 -
開源社區
+關注
關注
0文章
93瀏覽量
402
原文標題:OpenHarmony系統使用gdb調試init
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
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輕量系統QEMU RISC-V版本
本文將介紹如何為QEMU RISC-V虛擬平臺構建OpenHarmony輕量系統。得益于QEMU的CPU指令集模擬執行能力,該方法可以在沒有開發板的情況下調試和運行OpenHarmony
OpenHarmony之開機優化
OpenHarmony已經支持了Bootchart工具,我們可以直接使用Bootchart工具,Bootchart工具介紹如下:
概述
Bootchart是一個用于系統啟動過程性能分析的開源軟件工具
發表于 07-01 16:39
使用VSCode調試嵌入式程序:如何切換gdb server
上文小編給大家介紹了一下如何使用VSCode結合cortex-debug插件進行調試的方法。本篇就趁熱打鐵,進一步深入了解一下如何切換gdb server。讓我們可以不僅僅使用JLinkGDBServer進行調試。
arm三個寄存器在gdb調試時的作用
arm三個寄存器在gdb調試時作用? ARM是一種廣泛使用的微處理器架構,它廣泛應用于移動設備、嵌入式系統和其他高性能計算設備。當我們在使用gdb(GNU
如何使用linux下gdb來調試python程序
如何使用linux下gdb來調試python程序? 在Linux下,可以使用GDB(GNU調試器)來調試Python程序。
linux用gdb調試遇到函數調用怎么辦?
linux用gdb調試遇到函數調用怎么辦? 在Linux上使用GDB調試時,遇到函數調用是一個常見的情況。函數調用可能涉及到多個函數、多個文件,這就需要我們仔細審查代碼,理解函數之間的
簡述GDB調試器提供的基本功能
GDB是一個功能強大的源代碼級調試工具,它提供了多種基本功能,幫助程序員** **更好地理解程序的運行機制和定位問題** **。
啟動System Init進入OpenHarmony系統過程分析與適配
1 關鍵字
啟動、Init、產品配置、啟動配置
2 簡要描述
本文檔主要以XX開發版為例分析OpenHarmony系統啟動過程、產品配置、啟動配置,并舉例說明如何配置。
內核加載Init
發表于 01-26 10:04
腳本調試工具有哪些?腳本調試工具怎么用?
腳本調試是軟件開發過程中非常重要的一環,它能幫助開發者快速定位并解決代碼中的錯誤。大多數編程語言都提供了各種各樣的腳本調試工具,本文將介紹一些常見的腳本調試工具以及它們的基本使用方法。 GDB
評論