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文章
591瀏覽量
34131 -
開源社區
+關注
關注
1文章
95瀏覽量
798
原文標題:OpenHarmony系統使用gdb調試init
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
【原創】OpenHarmony系統投屏工具軟件 - OpenHarmony_OHScrcpy使用推薦
OpenHarmony_OHScrcpy - OpenHarmony投屏工具軟件
OpenHarmony_OHScrcpy是一款為OpenHarmony
發表于 01-22 18:34
DR1平臺Linux應用開發指南:含GDB調試、Python及MQTT實戰
本文為創龍科技DR1 系列評估板 Linux 應用開發手冊,系統講解開發環境搭建、GDB 調試、多類型應用案例及 MQTT 通信實現。核心內容包括 LinuxSDK 與工具鏈配置、GDB
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
【干貨分享】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系統使用gdb調試init
評論