鸿蒙系统开发中一些常用调试命令

记一些做鸿蒙系统开发或鸿蒙应用开发时可能会用到的调试命令。

记一些做鸿蒙系统开发或鸿蒙应用开发时可能会用到的调试命令。

准备 HDC 二进制文件

HDC 是鸿蒙设备的专属调试工具,类似于 ADB 之于 Android 开发的作用。可以通过 HDC 运行一些调试命令。

首先下载并安装 DevEco Studio,安装路径下会包含 OpenHarmony SDK,其中就有 HDC 工具。

下载 DevEco Studio

下载安装完成后在安卓目录下找到 HDC 工具所在目录,并将其添加到系统环境变量中:

DevEco Studio安装目录/sdk/default/openharmony/toolchains

添加环境变量完成后新建终端窗口,使用命令 hdc --version 命令查看当前的工具版本。

$ hdc --version
Ver: 3.2.0b

打开鸿蒙设备的 USB 调试

进入到设置的“关于本机”页面,连续点击“软件版本”多次,出现开发者选项。

打开“开发者选项”

之后在设置->系统页面中可以找到“开发者选项”,进入后打开“USB 调试”。

打开“USB 调试”

之后使用 HDC 命令时,设备上会弹出申请 USB 调试的授权弹框。

常用命令

一些常用的调试命令在网上已经有很完整的文章了,参考:【全网最全】鸿蒙 HDC 命令合集 (awesome-hdc) 这里介绍一些别的有用命令。

DUMP 信息

获取窗口信息

可以用于排查应用窗口生命周期相关的问题。

$ hdc shell hidumper -s WindowManagerService -a '-a'

-------------------------------[ability]-------------------------------


----------------------------------WindowManagerService----------------------------------
-------------------------------------ScreenGroup 0-------------------------------------
WindowName           DisplayId Pid     WinId Type Mode Flag ZOrd Orientation [ x    y    w    h    ] [ OffsetX OffsetY ] [ ScaleX  ScaleY  PivotX  PivotY  ]
SCBScenePanel12      0         11684   6     2109 1    0    100  0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
BackgroundBlurView3  0         11684   7     2109 1    0    101  0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBWallpaper6        0         11684   10    2000 1    0    1    0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBDesktop8          0         11684   13    2001 1    0    2    0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBGestureNavBar15   0         11684   21    2111 1    0    2200 0           [ 0    2734 1316 98   ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBGestureBack20     0         11684   26    2111 1    0    4102 0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBStatusBar25       0         11684   32    2108 1    0    2202 0           [ 0    0    1316 136  ] [ 0       0       ] [ 1       1       0.5     0.5     ]
settings0            0         12863   35    1    1    16   102  0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
---------------------------------------------------------------------------------------
SCBKeyboardPanel     0         11684   4     2134 1    0    -1   0           [ 0    0    0    0    ] [ 0       0       ] [ 1       1       0       0       ]
SCBScenePanel1       0         11684   5     2109 1    0    -1   0           [ 0    0    0    0    ] [ 0       0       ] [ 1       1       0       0       ]
TransparentView4     0         11684   8     2136 1    0    -1   0           [ 0    0    0    0    ] [ 0       0       ] [ 1       1       0       0       ]
BackgroundBlurView5  0         11684   9     2109 1    0    -1   0           [ 0    0    0    0    ] [ 0       0       ] [ 1       1       0       0       ]
SCBNegativeScreen9   0         11684   14    2126 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBGlobalSearch10    0         11684   15    2125 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBSysDialogDefault1 0         11684   17    2104 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBBannerNotificatio 0         11684   18    2106 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBScreenLock13      0         11684   19    2110 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBFormCenter14      0         11684   20    2135 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBDropdownPanel16   0         11684   22    2109 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SCBSysDialogUpper17  0         11684   23    2111 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBVolumePanel18     0         11684   24    2111 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBSideScenePanel19  0         11684   25    2135 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBSideEdgeBar21     0         11684   27    2135 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBSystemTopPanel22  0         11684   28    2111 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBPrivacyIndicator2 0         11684   29    2127 1    0    -1   0           [ 0    0    1316 2832 ] [ 0       0       ] [ 1       1       0       0       ]
SCBGestureTopBar24   0         11684   31    2111 1    0    -1   0           [ 0    0    1316 136  ] [ 0       0       ] [ 1       1       0.5     0.5     ]
SceneSessionAdapter2 0         11684   33    2109 1    0    -1   0           [ 0    0    0    0    ] [ 0       0       ] [ 1       1       0       0       ]
Focus window: 35
All Focus window:
DisplayId: 0 WindowId: 35
SingleHand: X[0] Y[0] scale[1]
Total window num: 29
Highlighted windows: 35

获取屏幕信息

可以用于排查涉及多屏/跨屏/虚拟屏相关的问题。

$ hdc shell hidumper -s DisplayManagerService -a '-a'

-------------------------------[ability]-------------------------------


----------------------------------DisplayManagerService----------------------------------
-------------- DMS FREEZED PID LIST  --------------
[PID: 5047]:  [amplemanagement]
[PID: 5098]:  [hms.pushservice]
[PID: 11722]:  [dispatchservice]
[PID: 11740]:  [.hms.adsservice]
[PID: 11755]:  [app.intelligent]
[PID: 12228]:  [hod:inputMethod]
[PID: 30908]:  [os.FusionSearch]
[PID: 37683]:  [hm.article.news]
[PID: 38231]:  [ysDialog/common]
-------------- DMS KEY EVENTS LIST  --------------
[01-12 15:42:22.170]: Dms construct.
[01-12 15:42:25.479]: Default screen id : 0
[01-12 15:42:25.491]: Dms OnScreenChange register success.
[01-12 15:42:25.491]: OnScreenChange triggered. screenId: 0  screenEvent: 0
[01-12 15:42:25.492]: Dms register rs events success.
[01-12 15:42:25.498]: Dms subscribed to sensor successfully.
[01-12 15:42:25.499]: Dms init end.
[01-12 15:42:25.503]: Dms AddSystemAbilityListener finished.
[01-12 15:42:25.503]: Dms onstart end.
[01-12 15:42:25.541]: CreateScreenProperty by rsInterface success.
[01-12 15:42:25.564]: create screen session success.
[01-12 15:42:25.564]: Dms RefreshRateChange register success.
[01-12 15:42:25.565]: screenRotation: 0 ret value: 0correctionRet:0
[01-12 15:42:25.636]: GetScreenPower state:0
[01-12 15:42:28.203]: GetScreenPower state:0 screenId:0
[01-12 15:42:58.499]: set client userId: 100 newScbPid: 11684 clientName: com.ohos.sceneboard
[01-12 15:42:58.513]:   oldUserId: 0  currentScbPId: -1  newUserId: 100  newScbPid: 11684  coldBoot: 1
-------------- DMS Multi User Info --------------
[oldScbPid:]
[userId:] 100
[ScbPid:] 11684
dms.hidumper.supportdebug false

获取 RS 树信息

用于获取渲染节点树信息,当出现显示问题时有用。返回的信息很大,可以先存到设备文件夹后通过文件传输命令传回本地。

hdc shell hidumper -s RenderService -a 'allInfo' | tee /data/local/tmp/rs.dump >/dev/null
hdc file recv /data/local/tmp/rs.dump .

重启相关

整机重启

hdc shell reboot

重启到 Recovery 模式

hdc shell reboot recovery

重启到 Fastboot

通常用于刷机。

hdc shell reboot bootloader

重启 SceneBoard

当系统出现 Bug 时,可以尝试重启 SceneBoard 恢复。

hdc shell kill -9 $(pidof com.ohos.sceheboard)

日志相关

导出 HiLog 日志

获取设备日志,通常用于问题定位。

hdc file recv /data/log/hilog .

切换 HiLog 日志打印等级

# 切换到 DEBUG
hdc shell hilog -b D
# 切换到 INFO
hdc shell hilog -b I

清空 HiLog 日志

hdc shell hilog -w clear

导出 FaultLog 日志

通常应用崩溃、系统 crash 后会产生 FaultLog 日志,可以通过命令导出。

hdc file recv /data/log/faultlog/faultlogger .

评论

0 条
内容

提交后会显示在评论区。

这里空空如也。

Nepsyn 的四叠半赛博空间Copyright © 2026 Nepsyn. All rights reserved.