OpenHarmony - 小型系統內核(LiteOS-A)(十),魔法鍵使用方法,用戶態異常信息說明

OpenHarmony - 小型系統內核(LiteOS-A)(十)


十四、魔法鍵使用方法

使用場景

在系統運行出現無響應等情況時,可以通過魔法鍵功能確定系統是否被鎖中斷(魔法鍵也無響應)或者查看系統任務運行狀態等信息。

在中斷有響應的情況下,可以通過魔法鍵查看task信息中 cpup(CPU占用率)看是哪個任務長時間占用CPU導致系統其他任務無響應(一般為比較高優先級任務一直搶占CPU,導致低優先級任務無響應)。

使用配置

魔法鍵依賴于宏LOSCFG_ENABLE_MAGICKEY,在kernel/liteos_a中輸入make menuconfig命令。此時會彈出配置項,找到Debug選項并進入,在配置項中開啟“Enable MAGIC KEY”:

Debug ---> Enable MAGIC KEY;若關閉該選項,則魔法鍵失效(默認為選中的)。

icon-note.gif

說明: 可以在menuconfig中,將光標移動到LOSCFG_ENABLE_MAGICKEY上,輸入“?”,可以查看幫助信息。

使用方法

  1. 輸入“ctrl + r”鍵,打開魔法鍵檢測功能。

    在連接UART或者USB轉虛擬串口的情況下,輸入“ctrl + r” 鍵,打開魔法鍵檢測功能,輸出 “Magic key on”;再輸入一次后,則關閉魔法鍵檢測功能,輸出“Magic key off”。魔法鍵功能如下:

    • ctrl + z:幫助鍵,輸出相關魔法鍵簡單介紹;

    • ctrl + t:輸出任務相關信息;

    • ctrl + p:系統主動進入panic,輸出panic相關信息后,系統會掛住;

    • ctrl + e:系統進行簡單完整性內存池檢查,檢查出錯會輸出相關錯誤信息,檢查正常會輸出“system memcheck over, all passed!”。

    須知: 魔法鍵檢測功能打開情況下,如果需要通過UART或者USB轉虛擬串口輸入特殊字符需避免與魔法鍵值重復,否則魔法鍵會被誤觸發,而原有設計功能可能出現錯誤。


十五、用戶態異常信息說明

用戶態在運行過程中,可能由于各種原因出現用戶態系統異常,異常信息如下所示:

##################excFrom: User!####################
prefetch_abort fault fsr:0x5, far:0x00000000
Translation fault, section
excType: prefetch abort
processName       = shell
processID         = 3
process aspace    = 0x01000000 -> 0x3f000000
taskName          = shell
taskID            = 4
task user stack   = 0x3707d000 -> 0x3717d000
pc    = 0x0 
ulr   = 0x2000424 in /bin/shell ---> 0x424
usp   = 0x3717cd60fp    = 0x3717cd64
R0    = 0x1
R1    = 0x0
R2    = 0x0
R3    = 0x1
R4    = 0x3717cf58
R5    = 0x0
R6    = 0x3717cf54
R7    = 0x200043c
R8    = 0x84
R9    = 0x229a7560
R10   = 0x0
R11   = 0x3717cd64
R12   = 0x0
CPSR  = 0x40000030
***backtrace begin***
traceback 0 -- lr = 0x229123a4    fp = 0x0 lr in /lib/libc.so --> 0x213a4PID  PPID PGID       UID  Status CPUUSE CPUUSE10s CPUUSE1s Policy Priority MTID TaskTotal   Mode  PName1    -1    1         0   Ready    0.0       0.0      0.0     RR       28   16         1   user  init                            2    -1    2         0    Pend   10.1      10.1      0.0     RR        0    0        14 kernel  KProcess                        3     1    3         0 Running    0.0       0.0      0.0     RR       28    4         1   user  shell                           TID  PID      Status StackSize WaterLine Policy Priority    MEMUSE  TaskName16    1       Ready    0x3000     0x978     RR       31    0x8b0c  init                            0    2        Pend    0x1000     0x1d4     RR        5         0  ResourcesTask                   2    2        Pend    0x4000     0x4ec     RR        0         0  Swt_Task                        3    2        Pend    0x4000     0x1d4     RR        1         0  system_wq                       5    2        Pend    0x4000     0x1fc     RR        9         0  SendToSer                       6    2    PendTime    0x6000     0x204     RR        5         0  tcpip_thread                    7    2        Pend    0x3000     0x1fc     RR        5         0  sdmci_detect                    8    2        Pend    0x4000     0x204     RR        5         0  USB_GIANT_Task                  9    2        Pend    0x4000     0x204     RR        1         0  USB_NGIAN_ISOC_Task             10    2        Pend    0x4000     0x204     RR        2         0  USB_NGIAN_BULK_Task             11    2        Pend    0x4000     0x690     RR        5     0xbb0  USB_EXPLR_Task                  12    2        Pend    0x4000     0x204     RR        5         0  USB_CXFER_Task                  13    2        Pend   0x20000     0x1e4     RR        3    0xac20  eth_irq_Task                    14    2        Pend    0x4000     0x1d4     RR       10         0  jffs2_gc_thread                 15    2        Pend    0x2000     0x1f4     RR        4         0  hisi_frw                        4    3     Running    0x3000     0x838     RR       31    0x1100  shell                           
system memcheck over, all passed!

其中,主要包含如下幾方面信息:

  1. 用戶態異常基本信息:

    prefetch_abort fault fsr:0x5, far:0x00000000
    Translation fault, section
    excType: prefetch abort
    processName       = shell
    processID         = 3
    process aspace    = 0x01000000 -> 0x3f000000
    taskName          = shell
    taskID            = 4
    task user stack   = 0x3707d000 -> 0x3717d000
    
  2. 寄存器相關信息。

    pc    = 0x0 
    ulr   = 0x2000424 in /bin/shell ---> 0x424
    usp   = 0x3717cd60fp    = 0x3717cd64
    R0    = 0x1
    R1    = 0x0
    R2    = 0x0
    R3    = 0x1
    R4    = 0x3717cf58
    R5    = 0x0
    R6    = 0x3717cf54
    R7    = 0x200043c
    R8    = 0x84
    R9    = 0x229a7560
    R10   = 0x0
    R11   = 0x3717cd64
    R12   = 0x0
    CPSR  = 0x40000030
    
  3. 調用棧信息。

    ***backtrace begin***
    traceback 0 -- lr = 0x229123a4    fp = 0x0 lr in /lib/libc.so --> 0x213a4
    
  4. 進程線程基本信息。

      PID  PPID PGID       UID  Status CPUUSE CPUUSE10s CPUUSE1s Policy Priority MTID TaskTotal   Mode  PName1    -1    1         0   Ready    0.0       0.0      0.0     RR       28   16         1   user  init                            2    -1    2         0    Pend   10.1      10.1      0.0     RR        0    0        14 kernel  KProcess                        3     1    3         0 Running    0.0       0.0      0.0     RR       28    4         1   user  shell                           TID  PID      Status StackSize WaterLine Policy Priority    MEMUSE  TaskName16    1       Ready    0x3000     0x978     RR       31    0x8b0c  init                            0    2        Pend    0x1000     0x1d4     RR        5         0  ResourcesTask                   2    2        Pend    0x4000     0x4ec     RR        0         0  Swt_Task                        3    2        Pend    0x4000     0x1d4     RR        1         0  system_wq                       5    2        Pend    0x4000     0x1fc     RR        9         0  SendToSer                       6    2    PendTime    0x6000     0x204     RR        5         0  tcpip_thread                    7    2        Pend    0x3000     0x1fc     RR        5         0  sdmci_detect                    8    2        Pend    0x4000     0x204     RR        5         0  USB_GIANT_Task                  9    2        Pend    0x4000     0x204     RR        1         0  USB_NGIAN_ISOC_Task             10    2        Pend    0x4000     0x204     RR        2         0  USB_NGIAN_BULK_Task             11    2        Pend    0x4000     0x690     RR        5     0xbb0  USB_EXPLR_Task                  12    2        Pend    0x4000     0x204     RR        5         0  USB_CXFER_Task                  13    2        Pend   0x20000     0x1e4     RR        3    0xac20  eth_irq_Task                    14    2        Pend    0x4000     0x1d4     RR       10         0  jffs2_gc_thread                 15    2        Pend    0x2000     0x1f4     RR        4         0  hisi_frw                        4    3     Running    0x3000     0x838     RR       31    0x1100  shell                           
    system memcheck over, all passed!
    

    可以根據以上信息,分析用戶態異常的具體原因。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78182.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CUDA編程之Grid、Block、Thread線程模型

一、線程模型:Grid、Block、Thread概念 ?1. 層級定義? ?Thread(線程)? CUDA中最基本的執行單元,對應GPU的單個CUDA核心(SP)。每個線程獨立執行核函數指令,擁有獨立的寄存器和局部內存空間?。 ?Block(線程塊)? 由多個線程組成(通常為32的倍數),是邏輯上的并…

實戰交易策略 篇十九:君山居士熊市交易策略

文章目錄 系列文章熊市三大特征熊市操作思維強勢重勢,弱勢重質搶反彈重要前提和五大原則反彈逃頂操盤其他炒股的至高境界力戒“三進三出”八大心理誤區八大戒律股市不敗之法系列文章 實戰交易策略 篇一:奧利弗瓦萊士短線交易策略 實戰交易策略 篇二:杰西利弗莫爾股票大作手…

Flutter IOS 真機 Widget 錯誤。Widget 安裝后系統中沒有

錯誤信息: SendProcessControlEvent:toPid: encountered an error: Error Domaincom.apple.dt.deviceprocesscontrolservice Code8 "Failed to show Widget com.xxx.xxx.ServerStatus error: Error DomainFBSOpenApplicationServiceErrorDomain Code1 "T…

【計算機視覺】CV實戰項目 - 深入解析基于HOG+SVM的行人檢測系統:Pedestrian Detection

深入解析基于HOGSVM的行人檢測系統:從理論到實踐 技術核心:HOGSVM檢測框架HOG特征原理SVM分類器 項目架構與數據準備INRIA Person數據集目錄結構 實戰指南:從零構建檢測系統環境配置完整訓練流程檢測應用 關鍵技術問題與解決方案1. 難例挖掘不…

day01_編程語言介紹丶Java語言概述丶開發環境搭建丶常用DOS命令

編程語言介紹 ?編程語言是一種用于人與計算機之間通信的語言,允許程序員編寫代碼,這些代碼告訴計算機要執行哪些操作?。編程語言可以被視為計算機可以理解并執行的指令集合,它是一種標準化的交流技巧,用于向計算機發出指令。?…

告別默認配置!Xray自定義POC開發指南

文章涉及操作均為測試環境,未授權時切勿對真實業務系統進行測試! 下載與解壓 官網地址: Xray GitHub Releases 根據系統選擇對應版本: Windows:xray_windows_amd64.exe.zipLinux:xray_linux_amd64.zipmacOS:xray_darwin_amd64.zip解壓后得到可執行文件(如 xray_linux_…

C語言編程--17.有效的括號

題目: 給定一個只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序…

代碼隨想錄算法訓練營第60期第十七天打卡

今天我們繼續進入二叉樹的下一個章節,今天的內容我在寫今天的博客前大致看了一下部分題目難度不算大,那我們就進入今天的題目。 第一題對應力扣編號為654的題目最大二叉樹 這道題目的坑相當多,我第一次題目沒有看明白就是我不知道到底是如何…

Burp靶場JWT學習筆記1

JWT(JSON Web Token) 從其名字就可以看出來,它具有表示身份的作用,其本質是將用戶信息儲存到一串json字符串中再將其編碼得到一串token JWT由三部分組成,分別是 Header,Payload,Signatrue JWTBase64(Header).Base6…

第53.5講 | 小項目實戰:用 SHAP 值解釋農作物產量預測模型 [特殊字符][特殊字符]

目錄 ? 項目背景 📦 所用工具 📁 數據字段(模擬) 🧑?💻 代碼實現步驟 🎯 解讀與啟發 🧠 項目拓展建議 ? 項目背景 我們使用一個簡化的玉米產量數據集(可模擬實…

極狐GitLab 合并請求依賴如何解決?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 合并請求依賴 (PREMIUM ALL) 在極狐GitLab 16.6 中引入了對復雜合并依賴關系的支持,通過名為 remove_mr_blockin…

Django DRF實現用戶數據權限控制

在 Django DRF 中使用 ModelViewSet 時,若需實現用戶僅能查看和操作自己的數據詳情,同時允許所有認證用戶訪問列表,需結合權限類和動態權限分配。以下是具體步驟: 1. 自定義對象權限類 創建一個 IsOwner 權限類,檢查…

【數據結構】——線性表之單鏈表

一、單鏈表的概念和結構 1、單鏈表的概念: 鏈表也是屬于我們的線性表中的一種,其物理結構上是不一定連續的,但是邏輯結構上是一定連續的,所以其是沒辦法像前面的順序表一樣通過找到下一個元素的,其是通過指針來找到下…

線程函數庫

pthread_create函數 pthread_create 是 POSIX 線程庫&#xff08;pthread&#xff09;中的一個函數&#xff0c;用于創建一個新的線程。 頭文件 #include <pthread.h> 函數原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*s…

2.5 橋梁橋面系及附屬結構施工

2.5.1 橋面系施工 1.排水設施 設置縱橫坡及泄水孔&#xff0c;減少橋面積水、防排結合。匯水槽、泄水孔頂面高程低于橋面鋪裝10-15mm。泄水孔邊緣設滲水盲溝泄水管下端至少應伸出構筑物底面100-150mm。泄水管通過豎向管道直接引至地面或雨水管線。豎向管道抱箍、卡環、定位卡…

docker 代理配置沖突問題

問題描述 執行 systemctl show --property=Environment docker 命令看到有如下代理配置 sudo systemctl show --property=Environment docker Environment=HTTP_PROXY=http://127.0.0.1:65001 HTTPS_PROXY=http://127.0.0.1:65001 NO_PROXY=127.0.0.1,docker.io,ghcr.io,uhub…

MATLAB基礎應用精講-【基礎知識篇】發布和共享 MATLAB 代碼

目錄 MATLAB發布代碼---生成文檔pdf 分節符對發布文件的分節 實時腳本 Matlab workspace與m腳本數據共享 發布和共享 MATLAB 代碼 在實時編輯器中創建和共享實時腳本 發布 MATLAB 代碼文件 (.m) 添加幫助和創建文檔 發布 MATLAB 代碼文件 (.m) 可創建包括您的代碼、注釋…

JDBC 批處理與事務處理:提升數據操作效率與一致性的密鑰

目錄 一. JDBC批量添加數據 1. 什么是批量添加數據 2. 實現數據的批量添加 a. 方式一&#xff1a;不分塊 二. JDBC事務處理 1. 什么是事務 2. JDBC事務處理實現 三. 總結 前言 本文來講解JDBC的批處理和事務處理 這對數據的安全性和準確性以及高效率提供很好的辦法 話不…

C++實現Atbash密碼

詳細說明 埃特巴什密碼是一種替換密碼&#xff0c;在該密碼中字母表中的字母是反向對應的。例如&#xff0c;A 會被替換為 Z&#xff0c;B 會被替換為 Y&#xff0c;依此類推。 #include <cassert> /// for assert #include <iostream> /// for IO operations #…

QuecPython+GNSS:實現快速定位

概述 QuecPython 結合 GNSS&#xff08;全球導航衛星系統&#xff09;模塊為物聯網設備提供開箱即用的定位能力解決方案。該方案支持 GPS/北斗/GLONASS/Galileo 多系統聯合定位&#xff0c;為物聯網開發者提供從硬件接入到云端服務的全棧式定位解決方案。 優勢特點 多體系定…