• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# hidumper
2
3<!--Kit: Performance Analysis Kit-->
4<!--Subsystem: HiviewDFX-->
5<!--Owner: @m0_55013956-->
6<!--Designer: @milkbread123-->
7<!--Tester: @gcw_KuLfPSbe-->
8<!--Adviser: @foryourself-->
9
10HiDumper是用于统一系统信息导出的命令行工具,支持分析CPU、内存、存储等系统资源使用情况,查询系统服务运行情况,定位资源使用异常、通信等相关问题。
11
12
13针对HiDumper所支撑的使用场景,本章节将介绍其查询内存信息、查询CPU使用情况、查询系统能力、查询进程信息、查询存储信息、查询系统信息等基础功能,以及系统故障日志获取,进程间通信记录导出,导出信息支持压缩转储等能力。
14
15
16HiDumper命令行工具使用常见问题汇总在[常见问题](#常见问题)章节。
17
18
19## 环境要求
20
21- 根据hdc命令行工具指导,完成[环境准备](hdc.md#环境准备)。
22
23- 请确保设备已正常连接,并执行hdc shell。
24
25
26## 命令行说明
27
28| 选项 | 说明 |
29| -------- | -------- |
30| -h | 帮助命令。 |
31| [-lc](#查询系统信息) | 列出系统信息簇。 |
32| [-ls](#查询系统服务列表) | 列出正在运行的系统能力。 |
33| [-c](#查询系统信息) | 获取系统全量信息簇详细信息,包含设备信息、内核信息和环境变量等。 |
34| [-c [base system]](#查询系统信息) | 获取指定信息簇详细信息,可选"base"或者"system"。 |
35| [-s](#获取系统服务详细信息) | 获取所有系统能力详细信息。 |
36| [-s [SA0 SA1]](#获取系统服务详细信息) | 获取一个或多个系统能力的详细信息。多个系统能力名称之间使用空格分隔。可通过 -ls 查询系统能力名称。 |
37| [-s [SA] -a ["option"]](#获取指定系统服务提供的能力) | 执行单个系统能力的特定选项。<br />SA:系统能力名称。<br />option:该系统能力支持的选项。可通过 -s [SA] -a ["-h"] 获取单个系统能力支持的所有选项。 |
38| [-e](#获取系统故障日志) | 获取记录的故障日志。输出日志的规格可参考:[CppCrash](cppcrash-guidelines.md#日志规格)、[JSCrash](jscrash-guidelines.md#日志规格)、[AppFreeze](appfreeze-guidelines.md#日志规格)。 |
39| [--net [pid]](#查询网络信息) | 获取网络信息,包含网络流量、网络接口统计、IP信息等。如果指定了进程的pid,则只输出该进程的网络流量使用信息。 |
40| [--storage [pid]](#查询存储信息) | 获取存储信息,包含磁盘统计、磁盘使用量、文件句柄等信息。如果指定了进程的pid,则只显示该进程的io信息。 |
41| [-p [pid]](#查询进程信息) | 获取进程信息,包括进程和线程的列表和信息。 |
42| [--cpuusage [pid]](#查询进程cpu使用率) | 获取CPU使用率,取值范围(0, CPU核数],按进程和类别分类;如果指定pid,则获取指定pid的CPU使用率。 |
43| [--cpufreq](#查询cpu频率) | 获取CPU每个核的真实频率,单位:kHz。 |
44| [--mem [--prune]](#查询整机内存) | 获取总内存使用情况。如果指定--prune,只导出精简的内存使用情况。<br />**说明**:从API version 20开始,支持--prune参数。 |
45| [--mem pid [--show-ashmem] [--show-dmabuf]](#查询进程内存) | 获取指定pid的进程内存使用情况。<br />指定 --show-ashmem,则补充打印该进程的ashmem使用详细信息。<br />如果是应用进程,指定--show-dmabuf,则补充打印DMA内存详情信息。<br />**说明**:从API version 20开始,支持--show-ashmem、--show-dmabuf参数。 |
46| [--zip](#导出信息压缩存储) | 保存命令输出到 /data/log/hidumper 下的压缩文件,压缩格式为 ZIP。 |
47| [--ipc [pid]/-a --start-stat/stat/--stop-stat](#获取进程间通信信息) | 统计一段时间进程IPC信息。如果使用-a,则统计所有进程IPC数据。使用--start-stat开始统计,使用--stat获取统计数据,使用--stop-stat结束统计。 |
48| [--mem-smaps pid [-v]](#查询进程内存) | 获取pid内存统计信息,数据来源于/proc/pid/smaps,使用-v指定更多详细信息。(仅支持导出[debug版本应用](performance-analysis-kit-terminology.md#debug版本应用))<br />**说明**:从API version 20开始,支持该参数。 |
49| [--mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw]](#查询虚拟机堆内存) | 必选参数pid。触发ArkTS应用JS线程的gc和堆内存快照导出。指定线程tid时,仅触发该线程的gc和堆内存快照导出;指定--gc时,仅触发gc,不导出快照;指定--leakobj时,应用开启泄露检测可获取泄露对象列表。<br>文件命名格式为:<!--RP1-->jsheap-进程号-JS线程号-时间戳<!--RP1End-->,文件内容为JSON结构的JS堆快照。<br>指定--raw时,堆快照以rawheap格式导出。<br />**说明**:从API version 19开始,支持--raw参数。 |
50| <!--DelRow-->[--mem-cjheap pid [--gc]](#查询虚拟机堆内存) | pid为必选参数。触发仓颉应用gc和堆内存快照导出。如果指定--gc,只触发gc不做快照导出。<br />**说明**:从API version 20开始,支持该参数。 |
51
52## 查询内存信息
53
54HiDumper内存信息查询模块主要用于查看系统整机内存使用情况和单个进程内存使用情况。开发者需要了解相关的[内存基础知识](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-memory-basic-knowledge)55
56### 查询整机内存
57
58可使用hidumper --mem命令获取整机内存使用情况。
59
60打印效果为:
61
62```
63$ hidumper --mem
64-------------------------------[memory]-------------------------------
65Total Memory Usage by PID:
66PID       Total Pss(xxx in SwapPss)   Total Vss   Total Rss   Total Uss          GL       Graph         Dma     PurgSum     PurgPin    Name
671          4309(2216 in SwapPss) kB  2158196 kB     4180 kB     1760 kB        0 kB        0 kB        0 kB        0 kB        0 kB    init
682            45613(0 in SwapPss) kB 17452952 kB    48352 kB    44088 kB        0 kB        0 kB        0 kB        0 kB        0 kB    sysmgr-main
69...
70Total Memory Usage by Size:
71PID        Total Pss(xxx in SwapPss)    Total Vss    Total Rss    Total Uss           GL        Graph          Dma      PurgSum      PurgPin     Name
723031         421826(0 in SwapPss) kB   5199308 kB    610812 kB    395712 kB         0 kB     17000 kB     17000 kB         0 kB         0 kB     xxx
731473         409349(0 in SwapPss) kB   7014040 kB    449460 kB    389528 kB    160336 kB     57092 kB     57092 kB         0 kB         0 kB     xxx
74...
75Total Pss by OOM adjustment:
76System: 1426777 kB
77   xxx(pid=1473):  409349 kB
78   xxx(pid=992):     80734 kB (23720 kB in SwapPss)
79...
80Total Pss by Category:
81File-backed Page(1414160 kB):
82      1053457 kB : .so
83       322813 kB : other
84        25616 kB : .hap
85         8064 kB : .ttf
86         3696 kB : .db
87          514 kB : dev
88Anonymous Page(2280332 kB):
89      1348463 kB : native heap
90       518107 kB : ark ts heap
91       361195 kB : other
92        49287 kB : stack
93         3280 kB : dev
94            0 kB : guard
95GPU(160340 kB):
96       160340 kB : GL
97Graph(350708 kB):
98       350708 kB : Graph
99DMA(350708 kB):
100       350708 kB : Dma
101
102      Total RAM:15803612 kB
103       Free RAM:10287099 kB (3999535 cached + 6287564 free)
104       Used RAM:3961668 kB (3163324 total pss + 798344 kernel)
105       Lost RAM:2086013 kB
106
107Total RAM by Category:
108hidumper - Hardware Usage:1860480 kB
109      CMA Usage:0 kB
110-   Kernel Usage:656937 kB
111Processes Usage:3694492 kB
112
113Total Purgeable:
114  Total PurgSum:0 kB
115  Total PurgPin:0 kB
116```
117
118VSS (Virtual Set Size)表示当前进程虚拟内存的大小,包括所有映射到该进程地址空间的内存区域。
119
120RSS (Resident Set Size)表示当前进程实际驻留在物理内存中的内存大小。
121
122PSS (Proportional Set Size)是一种更精确的内存使用度量方法,它将共享库所占的内存按比例分配给每个使用该库的进程。
123
124PurgSum(Purgeable Summary)表示当前进程可回收内存的总量。
125
126PurgPin(Purgeable Pinned)表示可回收但暂时无法立即回收的内存。
127
128GL代表GPU内存,包含应用使用的GPU内存和统一渲染在服务进程内产生的GPU内存。
129
130Graph代表图形内存,即DMA内存。
131
132可使用hidumper --mem --prune命令获取整机内存精简的使用情况。
133
134打印效果为:
135
136```shell
137$ hidumper --mem --prune
138-------------------------------[memory]-------------------------------
139Total Memory Usage by PID:
140PID        Total Pss(xxx in SwapPss)           GL     AdjLabel     Name
1411           4061(1668 in SwapPss) kB         0 kB        -1000     xxx
1422            101723(0 in SwapPss) kB         0 kB        -1000     xxx
143...
144```
145
146AdjLabel代表该进程内存的回收优先级,取值范围为[-1000, 1000],该值越大则表示该进程越不重要,内存会被优先回收。
147
148
149### 查询进程内存
150
151可使用hidumper --mem pid命令获取指定进程的内存使用情况,pid为指定的进程号。
152
153使用样例:
154
155```shell
156$ hidumper --mem 27336
157
158-------------------------------[memory]-------------------------------
159
160                          Pss         Shared         Shared        Private        Private           Swap        SwapPss           Heap           Heap           Heap
161                        Total          Clean          Dirty          Clean          Dirty          Total          Total           Size          Alloc           Free
162                       ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )
163              ------------------------------------------------------------------------------------------------------------------------------------------------------
164            GL              0              0              0              0              0              0              0              0              0              0
165         Graph              0              0              0              0              0              0              0              0              0              0
166   ark ts heap          12676           5516              0          12468              0           3068           3068              0              0              0
167         guard              0              0              0              0              0              0              0              0              0              0
168   native heap          15427          27132              0          14424              0          18776          18776          55796          53564           2809
169          .hap              4              0              0              4              0              0              0              0              0              0
170AnonPage other           1109           4932              0            968              0           4280           4280              0              0              0
171         stack           1404              0              0           1404              0             28             28              0              0              0
172           .db             32              0              0             32              0              0              0              0              0              0
173           .so          12877          58928          18868           5628           2028           1036           1036              0              0              0
174           dev             52              0            284             52              0              0              0              0              0              0
175          .ttf            296           1264              0              0              0              0              0              0              0              0
176FilePage other          21933           1432           4300          21524            148              0              0              0              0              0
177--------------------------------------------------------------------------------------------------------------------------------------------------------------------
178         Total          92998          99204          23452          56504           2176          27188          27188          55796          53564           2809
179
180native heap:
181  jemalloc meta:          1010            276              0           1000              0            156            156              0              0              0
182  jemalloc heap:         13126          22412              0          12260              0          17876          17876              0              0              0
183       brk heap:          1259           4444              0           1132              0            744            744              0              0              0
184      musl heap:            32              0              0             32              0              0              0              0              0              0
185
186Purgeable:
187        PurgSum:0 kB
188        PurgPin:0 kB
189
190DMA:
191            Dma:0 kB
192
193Ashmem:
194Total Ashmem:144 kB
195```
196
197可使用hidumper --mem pid --show-ashmem获取指定pid的内存使用情况,同时打印ashmem使用详细信息。
198
199使用样例:
200
201```shell
202$ hidumper --mem 27336 --show-ashmem
203-------------------------------[memory]-------------------------------
204
205                          Pss         Shared         Shared        Private        Private           Swap        SwapPss           Heap           Heap           Heap
206                        Total          Clean          Dirty          Clean          Dirty          Total          Total           Size          Alloc           Free
207                       ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )
208              ------------------------------------------------------------------------------------------------------------------------------------------------------
209            GL              0              0              0              0              0              0              0              0              0              0
210         Graph              0              0              0              0              0              0              0              0              0              0
211   ark ts heap          12657           5516              0          12468              0           3068           3068              0              0              0
212         guard              0              0              0              0              0              0              0              0              0              0
213   native heap          15191          27132              0          14252              0          18780          18780          55792          53527           2629
214          .hap              4              0              0              4              0              0              0              0              0              0
215AnonPage other           1094           4932              0            964              0           4280           4280              0              0              0
216         stack           1388              0              0           1388              0             28             28              0              0              0
217           .db             32              0              0             32              0              0              0              0              0              0
218           .so          12557          59184          18868           5372           2028           1036           1036              0              0              0
219           dev             52              0            284             52              0              0              0              0              0              0
220          .ttf            296           1264              0              0              0              0              0              0              0              0
221FilePage other          21916           1432           4300          21524            148              0              0              0              0              0
222--------------------------------------------------------------------------------------------------------------------------------------------------------------------
223         Total          92379          99460          23452          56056           2176          27192          27192          55792          53527           2629
224
225native heap:
226  jemalloc meta:          1008            276              0           1000              0            156            156              0              0              0
227  jemalloc heap:         12892          22412              0          12088              0          17880          17880              0              0              0
228       brk heap:          1259           4444              0           1132              0            744            744              0              0              0
229      musl heap:            32              0              0             32              0              0              0              0              0              0
230
231Purgeable:
232        PurgSum:0 kB
233        PurgPin:0 kB
234
235DMA:
236            Dma:0 kB
237
238Ashmem:
239Total Ashmem:144 kB
240Process_name    Process_ID      Fd      Cnode_idx       Applicant_Pid   Ashmem_name     Virtual_size    Physical_size   magic    -> 详细ashmem信息
241wei.xxx.xxx  27336   72      328415  27336   dev/ashmem/Paf.Permission.appImg        147456  147456  14105
242```
243
244使用hidumper --mem pid --show-dmabuf命令可获取指定PID的内存使用情况,并打印DMA内存详细信息。
245
246使用样例:
247
248```shell
249$ hidumper --mem 27336 --show-dmabuf
250-------------------------------[memory]-------------------------------
251
252                          Pss         Shared         Shared        Private        Private           Swap        SwapPss           Heap           Heap           Heap
253                        Total          Clean          Dirty          Clean          Dirty          Total          Total           Size          Alloc           Free
254                       ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )
255              ------------------------------------------------------------------------------------------------------------------------------------------------------
256            GL              0              0              0              0              0              0              0              0              0              0
257         Graph              0              0              0              0              0              0              0              0              0              0
258   ark ts heap          12657           5516              0          12468              0           3068           3068              0              0              0
259         guard              0              0              0              0              0              0              0              0              0              0
260   native heap          15191          27132              0          14252              0          18780          18780          55792          53527           2629
261          .hap              4              0              0              4              0              0              0              0              0              0
262AnonPage other           1094           4932              0            964              0           4280           4280              0              0              0
263         stack           1388              0              0           1388              0             28             28              0              0              0
264           .db             32              0              0             32              0              0              0              0              0              0
265           .so          12557          59184          18868           5372           2028           1036           1036              0              0              0
266           dev             52              0            284             52              0              0              0              0              0              0
267          .ttf            296           1264              0              0              0              0              0              0              0              0
268FilePage other          21916           1432           4300          21524            148              0              0              0              0              0
269--------------------------------------------------------------------------------------------------------------------------------------------------------------------
270         Total          92379          99460          23452          56056           2176          27192          27192          55792          53527           2629
271
272native heap:
273  jemalloc meta:          1008            276              0           1000              0            156            156              0              0              0
274  jemalloc heap:         12892          22412              0          12088              0          17880          17880              0              0              0
275       brk heap:          1259           4444              0           1132              0            744            744              0              0              0
276      musl heap:            32              0              0             32              0              0              0              0              0              0
277
278Purgeable:
279        PurgSum:0 kB
280        PurgPin:0 kB
281
282DMA:
283            Dma:0 kB
284Process               pid         fd        size_bytes        ino       exp_pid       exp_task_comm     buf_name      exp_name      buf_type      leak_type
285m.xxx.xxx             7612        87        40960             2750      1424          allocatxxxx       RSxxxxxx      xxxxx          xx            xxxx
286
287Ashmem:
288Total Ashmem:144 kB
289```
290字段说明:
291
292| 字段 | 说明 |
293| -------- | -------- |
294| Process | 持有ION内存块的应用进程包名(16个字符截断)。 |
295| pid | 发生故障进程pid。 |
296| fd | 进程持有的句柄。 |
297| size_bytes | 进程持有的ION内存buffer大小,单位:B。 |
298| ino | 文件inode号(索引节点号)。 |
299| exp_pid | 从内核申请ION内存的进程pid。 |
300| exp_task_comm | 从内核申请ION内存的进程名。 |
301| buf_name | ION内存的buffer名字。 |
302| exp_name | ION内存的buffer扩展名。 |
303| buf_type | ION内存的buffer类型。 |
304| leak_type | ION内存泄漏维测的buffer类型。 |
305
306可使用hidumper --mem-smaps pid命令获取指定进程的详细内存使用情况,该命令会累加相同内存段的内存值。
307
308使用样例:
309
310```txt
311$ hidumper --mem-smaps 3456  # 3456 为目标可调试应用进程号
312
313-------------------------------[memory]-------------------------------
314
315                                    Shared      Shared      Private     Private
316Size        Rss         Pss         Clean       Dirty       Clean       Dirty       Swap        SwapPss     Counts      Category                         Name
31716          0           0           0           0           0           0           4           4           3           FilePage other                   [anon]
3188           8           8           0           0           8           0           0           0           1           FilePage other                   /bin/init
3192048        52          0           0           52          0           0           0           0           1           dev                              /dev/__parameters__/param_sec_dac
32080          28          1           0           28          0           0           0           0           1           dev                              /dev/__parameters__/param_selinux
321...
322```
323
324统计信息说明:
325
326| 字段 | 说明 |
327| -------- | -------- |
328| Counts | 相同内存段出现的次数。 |
329| Category | 内存所属类别。 |
330
331可使用hidumper --mem-smaps pid -v命令获取指定进程的详细内存使用情况,该命令会直接打印进程的所有内存信息,不会对相同内存信息做二次处理。
332
333
334使用样例:
335
336```txt
337$ hidumper --mem-smaps 3456 -v   # 3456 为目标可调试应用进程号
338
339-------------------------------[memory]-------------------------------
340                                    Shared      Shared      Private     Private
341Size        Rss         Pss         Clean       Dirty       Clean       Dirty       Swap        SwapPss     Category                   Name
3424           4           2           0           4           0           0           0           0           FilePage other             [anon]
3434           4           2           0           4           0           0           0           0           FilePage other             /bin/init
344...
345```
346
347**注意事项**
348
349hidumper --mem-smaps [pid] [-v]命令调试的进程应为“使用调试证书签名的应用”,同[debug版本应用](performance-analysis-kit-terminology.md#debug版本应用)。
350
351要确认命令指定的应用是否为可调试应用,可以执行以下命令进行查询:hdc shell "bm dump -n [应用包名] | grep appProvisionType"查询,预期返回信息为"appProvisionType": "debug"。
352
353以包名com.example.myapplication为例,可执行如下命令查询:
354
355```shell
356hdc shell "bm dump -n com.example.myapplication | grep appProvisionType"
357```
358
359如包名对应的应用是可调试应用,预期返回信息:
360
361```shell
362"appProvisionType": "debug",
363```
364
365构建可调试应用需要使用调试证书进行签名,申请调试证书及签名可参考:[申请调试证书](https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-debugcert-0000001914263178)366
367
368### 查询虚拟机堆内存
369
370<!--RP2-->
371使用hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw]命令可以查看ArkTS应用虚拟机堆内存,使用hidumper --mem-cjheap pid [--gc]命令可以查看仓颉应用虚拟机堆内存。生成的堆内存文件存放于/data/log/faultlog/temp目录。
372<!--RP2End-->
373
374> **注意:**
375>
376> hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw]命令调试的进程应为“使用调试证书签名的应用”,同[debug版本应用](performance-analysis-kit-terminology.md#debug版本应用)。
377>
378> 确认命令指定的应用是否为可调试应用:参考上述hidumper --mem-smaps [pid] [-v]命令中的注意事项。
379
380- 可使用hidumper --mem-jsheap pid命令获取指定进程所有JS线程的虚拟机堆内存,文件命名为:<!--RP1-->jsheap-进程号-JS线程号-时间戳<!--RP1End-->,如果有多个JS线程会生成多个文件。
381
382  使用样例:
383
384  <!--RP3-->
385  ```shell
386  $ hidumper --mem-jsheap 64949  -> 64949 为目标应用进程号
387  $ ls | grep jsheap   -> 进入堆内存文件存放目录后执行
388  jsheap-64949-64949-1751075546050
389  jsheap-64949-64989-1751075546050
390  ```
391  <!--RP3End-->
392
393- 可使用hidumper --mem-jsheap pid -T tid命令获取指定进程指定JS线程的虚拟机堆内存,文件命名为:<!--RP1-->jsheap-进程号-JS线程号-时间戳<!--RP1End-->。
394
395  使用样例:
396
397  <!--RP4-->
398  ```shell
399  $ hidumper --mem-jsheap 64949 -T 64949  -> 64949 为目标应用进程号
400  $ ls | grep jsheap  -> 进入堆内存文件存放目录后执行
401  jsheap-64949-64949-1751075567710
402  ```
403  <!--RP4End-->
404
405- 可使用hidumper --mem-jsheap pid [-T tid] --raw获取指定进程或指定JS线程的虚拟机堆内存,生成的堆内存文件为rawheap格式,文件命名为<!--RP1-->jsheap-进程号-JS线程号-时间戳<!--RP1End-->.rawheap。rawheap的解析转换可参考使用:[rawheap-translator工具](../tools/rawheap-translator.md)。
406
407  使用样例:
408
409  <!--RP5-->
410  ```shell
411  $ hidumper --mem-jsheap 64949 --raw  -> 64949 为目标应用进程号
412  $ ls | grep jsheap  -> 进入堆内存文件存放目录后执行
413  jsheap-64949-64949-1751075546050.rawheap
414  jsheap-64949-64989-1751075546050.rawheap
415  $ hidumper --mem-jsheap 64949 -T 64949 --raw  -> 64949 为目标应用进程号
416  $ ls | grep jsheap
417  jsheap-64949-64949-1751075546055.rawheap
418  ```
419  <!--RP5End-->
420
421- 可使用hidumper --mem-jsheap pid --gc命令触发指定应用进程GC。该命令不会生成任何文件,执行成功不会有命令回显。
422
423  使用样例:
424
425  ```shell
426  $ hidumper --mem-jsheap 64949 --gc  -> 64949 为目标应用进程号
427  ```
428
429- 可使用hidumper --mem-jsheap pid --leakobj获取指定进程的虚拟机堆内存和泄漏对象信息,文件命名为:<!--RP6-->leaklist-进程号-时间戳<!--RP6End-->。
430
431    获取指定进程的虚拟机堆内存和泄露对象信息的前提是应用已通过[@ohos.hiviewdfx.jsLeakWatcher (js泄露检测)](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md)接口开启了泄漏检测功能。
432
433    具体使用步骤为:
434
435    1. 应用调用[jsLeakWatcher.enable](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md#jsleakwatcherenable)接口。
436    2. 应用调用[jsLeakWatcher.watch](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md#jsleakwatcherwatch)接口。
437    3. 执行hidumper --mem-jsheap [pid] --leakobj命令,导出虚拟机堆内存和泄漏对象信息。
438
439  使用样例:
440
441  <!--RP7-->
442  ```shell
443  $ hidumper --mem-jsheap 64949 --leakobj
444  $ ls | grep leaklist
445  leaklist-64949-1730873210483
446  ```
447  <!--RP7End-->
448
449<!--Del-->
450- 可使用hidumper --mem-cjheap pid命令获取指定仓颉进程的虚拟机堆内存,文件命名为:cjheap-进程号-时间戳。
451
452  使用样例:
453
454  ```shell
455  $ hidumper --mem-cjheap 65012  -> 65012 为目标应用进程号
456  $ ls | grep cjheap   -> 进入堆内存文件存放目录后执行
457  cjheap-65012-1751075546050
458  ```
459
460- 可使用hidumper --mem-cjheap pid --gc命令触发指定仓颉应用进程GC。该命令不会生成任何文件,执行成功不会有命令回显。
461
462  使用样例:
463
464  ```shell
465  $ hidumper --mem-cjheap 65012 --gc  -> 65012 为目标应用进程号
466  ```
467<!--DelEnd-->
468上述生成的文件,可以通过hdc[文件传输](hdc.md#文件传输)命令从设备中获取。
469
470
471## 查询CPU使用情况
472
473使用hidumper工具查看CPU相关信息,可以了解到当前系统的CPU负载情况。
474
475
476### 查询整机CPU使用率
477
478可使用hidumper --cpuusage获取整机CPU使用率。
479
480打印效果为:
481
482```shell
483$ hidumper --cpuusage
484
485-------------------------------[cpuusage]-------------------------------
486
487Load average: 12.1 / 12.2 / 12.1; the cpu load average in 1 min, 5 min and 15 min
488CPU usage from 2024-11-06 11:59:33 to 2024-11-06 11:59:38
489Total: 6.38%; User Space: 2.57%; Kernel Space: 3.81%; iowait: 0.02%; irq: 0.14%; idle: 93.46%
490Details of Processes:
491    PID   Total Usage      User Space    Kernel Space    Page Fault Minor    Page Fault Major    Name
492    105      109.01%           0.00%        109.01%             164                   0            tppmgr.elf
493    2          0.89%           0.00%          0.89%               0                   0            sysmgr-main
494...
495```
496
497
498### 查询进程CPU使用率
499
500可使用hidumper --cpuusage pid获取指定进程的CPU使用率。
501
502打印效果为:
503
504```shell
505$ hidumper --cpuusage 1
506
507-------------------------------[cpuusage]-------------------------------
508
509Load average: 12.1 / 12.2 / 12.1; the cpu load average in 1 min, 5 min and 15 min
510CPU usage from 2024-11-06 11:59:33 to 2024-11-06 11:59:35
511Total: 3.80%; User Space: 1.45%; Kernel Space: 2.35%; iowait: 0.00%; irq: 0.14%; idle: 96.06%
512Details of Processes:
513    PID   Total Usage      User Space    Kernel Space    Page Fault Minor    Page Fault Major    Name
514    1          0.00%           0.00%          0.00%           38368                1394            init
515```
516
517
518### 查询CPU频率
519
520可使用hidumper --cpufreq获取CPU频率信息。
521
522打印效果为:
523
524```shell
525$ hidumper --cpufreq
526
527-------------------------------[cpufreq]-------------------------------
528
529
530cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
531
5321018000
533
534cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
535
5361530000
537...
538```
539
540
541## 查询系统服务
542
543
544### 查询系统服务列表
545
546- 可使用hidumper -ls命令获取正在运行的系统服务列表。
547
548打印效果为:
549
550```shell
551$ hidumper -ls
552System ability list:
553SystemAbilityManager             RenderService                    AbilityManagerService
554DataObserverMgr                  AccountMgr                       AIEngine
555BundleMgr                        FormMgr                          ApplicationManagerService
556AccessibilityManagerService      UserIdmService                   UserAuthService
557AuthExecutorMgrService           PinAuthService                   FaceAuthService
558FingerprintAuthService           WifiDevice                       WifiHotspot
559WifiP2p                          WifiScan                         1125
5601126                             BluetoothHost                    NetConnManager
561NetPolicyManager                 NetStatsManager                  NetTetheringManager
562...
563```
564
565
566### 获取系统服务详细信息
567
568- 可使用hidumper -s获取所有系统服务的详细信息。
569
570打印效果为:
571
572```shell
573$ hidumper -s
574
575-------------------------------[ability]-------------------------------
576
577
578----------------------------------SystemAbilityManager----------------------------------
579The arguments are illegal and you can enter '-h' for help.
580
581-------------------------------[ability]-------------------------------
582
583
584----------------------------------RenderService----------------------------------
585------Graphic2D--RenderService ------
586Usage:
587h                             |help text for the tool
588...
589```
590
591
592- 可使用hidumper -s [SA0] [SA1]获取指定的一个或多个系统服务的详细信息。其中系统能力名[SA0] [SA1]可通过上述hidumper -ls命令查询得到。
593
594
595打印效果为:
596
597
598```shell
599$ hidumper -s WindowManagerService
600
601-------------------------------[ability]-------------------------------
602
603
604----------------------------------WindowManagerService----------------------------------
605Usage:
606-h                             |help text for the tool
607-a                             |dump all window information in the system
608-w {window id} [ArkUI Option]  |dump specified window information
609------------------------------------[ArkUI Option]------------------------------------
610...
611$ hidumper -s WindowManagerService RenderService
612
613-------------------------------[ability]-------------------------------
614
615
616----------------------------------WindowManagerService----------------------------------
617Usage:
618-h                             |help text for the tool
619-a                             |dump all window information in the system
620-w {window id} [ArkUI Option]  |dump specified window information
621------------------------------------[ArkUI Option]------------------------------------
622
623
624-------------------------------[ability]-------------------------------
625
626
627----------------------------------RenderService----------------------------------
628------Graphic2D--RenderService ------
629Usage:
630h                             |help text for the tool
631screen                         |dump all screen information in the system
632surface                        |dump all surface information
633composer fps                   |dump the fps info of composer
634...
635```
636
637
638### 获取指定系统服务提供的能力
639
640
641可使用hidumper -s [SA] -a ["option"]可以获取指定系统服务提供的能力。
642
643
644以RenderService系统渲染服务为例,获取其使用帮助,打印效果如下:
645
646
647```shell
648$ hidumper -s RenderService -a "h"
649
650-------------------------------[ability]-------------------------------
651
652----------------------------------RenderService----------------------------------
653------ Graphic2D--RenderSerice ------
654Usage:
655gles                          |inquire gpu info
656h                             |help text for the tool
657allInfo                       |dump all info
658fpsCount                      |dump the refresh rate counts info
659surfacenode                   |surfacenode [id]
660trimMem                       |dump trim Mem info
661surface                       |dump all surface information
662MultiRSTrees                  |dump multi RS Trees info
663fpsClear                      |[surface name]/composer fpsClear, clear the fps info
664dumpMem                       |dump Cache
665allSurfacesMem                |dump surface mem info
666RSTree                        |dump RS Tree info
667rsLogFlag                     |set rs log flag
668nodeNotOnTree                 |dump nodeNotOnTree info
669client                        |dump client ui node trees
670clearFpsCount                 |clear the refresh rate counts info
671hitchs                        |[windowname] hitchs, dump the hitchs info of window
672vktextureLimit                |dump vk texture limit info
673EventParamList                |dump EventParamList info
674dumpNode                      |dump render node info
675dumpExistPidMem               |dumpExistPidMem [pid], dump exist pid mem info
676fps                           |[windowname] fps, dump the fps info of window
677flushJankStatsRs              |flush rs jank stats hisysevent
678screen                        |dump all screen infomation in the system
679```
680
681
682系统服务提供的具体功能,如获取GPU相关信息,可以使用以下命令,打印结果如下:
683
684```shell
685$ hidumper -s RenderService -a "gles"
686
687-------------------------------[ability]-------------------------------
688
689
690----------------------------------RenderService----------------------------------
691
692-- DumpGpuInfo:
693GL_VENDOR: HUAWEI
694GL_RENDERER: Maleoon 910
695GL_VERSION: OpenGL ES 3.2 B283
696GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.20
697```
698
699
700## 查询进程信息
701
702可使用hidumper -p [pid]命令获取指定进程的相关信息,包括进程的挂载信息,进程的线程信息,线程的运行时间,进程等待通道信息。
703
704
705> **注意:**
706>
707> hidumper -p [pid]命令调试的进程应为“使用调试证书签名的应用”。
708>
709> 确认命令指定的应用是否为可调试应用:参考hidumper --mem-smaps [pid] [-v]命令中的介绍。
710
711
712打印效果为:
713
714
715```shell
716$ hidumper -p 64949
717
718-------------------------------[processes]-------------------------------
719
720
721cmd is: ps -efT -p 64949
722
723UID            PID   TID  PPID TCNT STIME TTY          TIME CMD
72420020169     64949 64949   629   17 11:40:14 ?     00:00:00 com.example.jsleakwatcher
72520020169     64949   733   629   17 11:40:28 ?     00:00:00 com.example.jsleakwatcher
726...
727$ hidumper -p
728
729-------------------------------[processes]-------------------------------
730
731
732cmd is: ps -efT
733
734UID            PID   TID  PPID TCNT STIME TTY          TIME CMD
735root             1     1     0    1 10:46:59 ?     00:00:08 init --second-stage 2389791
736root             2     2     0  127 10:46:59 ?     00:00:24 [sysmgr-main]
737root             2     4     0  127 10:46:59 ?     00:00:00 [call_ebr]
738...
739```
740
741
742## 查询网络信息
743
744可使用hidumper --net命令获取网络流量信息,网络接口统计信息、网口统计信息、IP信息、iptable信息和binder信息。该功能是通过netstat、ifconfig、iptables等系统命令获取网络信息。
745
746打印效果为:
747
748```shell
749$ hidumper --net
750
751-------------------------------[net traffic]-------------------------------
752
753Received Bytes:0
754Sent Bytes:51885
755
756-------------------------------[net]-------------------------------
757
758cmd is: netstat -nW  -> 通过netstat -nW命令查询网络连接、路由表、接口统计等网络相关信息。
759...
760```
761
762
763可使用hidumper --net [pid]命令获取指定进程的网络流量信息。
764
765
766打印效果为:
767
768
769```shell
770$ hidumper --net 1
771
772-------------------------------[net traffic]-------------------------------
773
774Received Bytes:0
775Sent Bytes:51885
776```
777
778
779## 查询存储信息
780
781- 可使用hidumper --storage命令获取磁盘统计信息、磁盘使用量信息、文件句柄信息、IO流量统计信息和挂载信息。
782
783打印效果为:
784
785```shell
786$ hidumper --storage
787
788-------------------------------[storage]-------------------------------
789
790
791cmd is: storaged -u -p
792...
793```
794
795
796- 可使用hidumper --storage [pid]命令获取指定进程的IO信息。
797
798
799打印效果为:
800
801
802```shell
803$ hidumper --storage 1
804
805-------------------------------[storage io]-------------------------------
806
807
808/proc/1/io
809
810rchar: 28848175
811wchar: 4364169
812syscr: 16886
813syscw: 15866
814read_bytes: 30617600
815write_bytes: 10907648
816cancelled_write_bytes: 734003
817```
818
819
820IO信息的相关字段解释如下:
821
822
823- rchar:代表自进程启动以来所读取的总字符数,包括通过缓存或直接读取的字符。单位为Byte。
824
825- wchar:代表自进程启动以来所写入的总字符数,包括通过缓存或直接写入的字符。单位为Byte。
826
827- syscr:代表自进程启动以来所执行的 read 系统调用的次数。
828
829- syscw:代表自进程启动以来所执行的 write 系统调用的次数。
830
831- read_bytes:代表自进程启动以来所读取的字节数,包括从文件系统、网络等设备读取的字节数。单位为Byte。
832
833- write_bytes:代表自进程启动以来所写入的字节数,包括写入到文件系统、网络等设备的字节数。单位为Byte。
834
835- cancelled_write_bytes:代表自进程启动以来,因写入操作被取消而未写入的字节数。通常情况下,只有在向磁盘写入数据时发生错误或写入操作被中断时,该字段的值才会非零。单位为Byte。
836
837
838## 查询系统信息
839
840- 可使用hidumper -lc命令获取系统信息簇列表。
841
842打印效果为:
843
844```shell
845$ hidumper -lc
846System cluster list:
847base                             system
848```
849
850- 可使用hidumper -c [系统通信息簇名称]命令获取指定信息簇信息。
851
852例如可使用hidumper -c base命令获取设备信息、内核版本、启动参数和启动时间。打印效果为:
853
854```shell
855-------------------------------[base]-------------------------------
856
857BuildId: ALN-AL00 5.0.1.XXX(XXX)   -> 设备信息
858ReleaseType: Beta1
859OsVersion: phone/HUAWEI/HUAWEI/ALN/OpenHarmony-5.0.1.XXX(Beta1)/ALN-AL10/ALN-AL10/XX/5.0.1.XXX/default
860DeviceType: phone
861...
862
863/proc/version
864
865Hongmeng version: HongMeng Kernel X.XX.XX  -> 内核版本
866
867/proc/cmdline   -> 启动参数
868
869ohos.boot.post_data_blks=0x0 ohos.boot.ptn_last_blk=0x772AFFF ...
870
871cmd is: uptime -p
872
873up 0 weeks, 0 days, 5 hours, 27 minutes   -> 启动时间
874```
875
876例如可使用hidumper -c system命令获取环境变量、内核模块信息、当前已加载的内核模块、slab信息、zone信息、vmstat、vmalloc信息、cpu频率信息和内存信息。打印效果为:
877
878```shell
879$ hidumper -c system
880
881-------------------------------[system]-------------------------------
882
883
884cmd is: printenv   -> 环境变量
885
886_=/system/bin/printenv
887LANG=en_US.UTF-8
888HOME=/root
889PULSE_STATE_PATH=/data/data/.pulse_dir/state
890OLDPWD=/
891PWD=/
892TMP=/data/local/mtp_tmp/
893PULSE_RUNTIME_PATH=/data/data/.pulse_dir/runtime
894...
895
896/proc/modules   -> 内核模块信息
897
898modem_driver 1490944 24 - Live 0x0000000000000000
899hmtpp_freq_dal_kirin 20480 0 [permanent], Live 0x0000000000000000 (O)
900kconsole 20480 0 [permanent], Live 0x0000000000000000 (O)
901hmtpp_dal 40960 2 hmtpp_freq_dal_kirin, Live 0x0000000000000000 (O)
902...
903
904cmd is: lsmod  -> 当前已加载的内核模块
905
906Module                  Size  Used by
907modem_driver         1490944  24
908hmtpp_freq_dal_kirin    20480  0 [permanent]
909kconsole               20480  0 [permanent]
910hmtpp_dal              40960  2 hmtpp_freq_dal_kirin
911...
912
913/proc/slabinfo   -> slab 信息
914
915slabinfo - version: 2.0
916#name       <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <num_pool> <sharedavail> <reclaimable>
917slab-[16]                  48459  54432     16    252      1 : tunables 0 0 0 : slabdata    215    216      4 0 0
918slab-[24]                  78315  83328     24    168      1 : tunables 0 0 0 : slabdata    496    496      4 0 0
919slab-[32]                   5834   9954     32    126      1 : tunables 0 0 0 : slabdata     79     79      4 0 0
920...
921
922/proc/zoneinfo   -> zone 信息
923
924Node 0, zone      DMA
925  per-node stats
926      nr_inactive_anon 419922
927      nr_active_anon 11737
928      nr_inactive_file 381289
929      nr_active_file 456643
930...
931
932/proc/vmstat   -> vmstat 信息
933
934workingset_refault_anon    63071
935workingset_refault_file        0
936workingset_activate_anon     1742
937workingset_activate_file        0
938...
939
940/proc/vmallocinfo   -> vmalloc 信息
941
9420x0000000000000000-0x0000000000000000    4096 of_iomap+0xe4/0xec pages=1 phys=0xfb21b000 ioremap
9430x0000000000000000-0x0000000000000000    4096 of_iomap+0xe4/0xec pages=1 phys=0xffb85000 ioremap
9440x0000000000000000-0x0000000000000000    4152 gen_pool_add_owner+0x48/0xc0 pages=2 vmalloc
9450x0000000000000000-0x0000000000000000    4096 of_iomap+0xe4/0xec pages=1 phys=0xee262000 ioremap
946...
947
948cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq   -> CPU 频率信息
949
9501430000
951
952cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
953
9541530000
955
956cmd is: cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq
957
9581430000
959...
960
961-------------------------------[memory]-------------------------------     -> 内存信息
962Total Memory Usage by PID:
963PID        Total Pss(xxx in SwapPss)    Total Vss    Total Rss    Total Uss           GL        Graph          Dma      PurgSum      PurgPin     Name
9641           4001(1672 in SwapPss) kB     59028 kB      5744 kB      1972 kB         0 kB         0 kB         0 kB         0 kB         0 kB     init
9652             50451(0 in SwapPss) kB 18014398163279052 kB     52088 kB     49448 kB         0 kB         0 kB         0 kB         0 kB         0 kB     sysmgr-main
96679             2741(0 in SwapPss) kB   2145468 kB      6052 kB      1292 kB         0 kB         0 kB         0 kB         0 kB         0 kB     crypto.elf
96780             8796(0 in SwapPss) kB   2156116 kB     12584 kB      6940 kB         0 kB         0 kB         0 kB         0 kB         0 kB     devmgr.elf
96885            96861(0 in SwapPss) kB  37180468 kB    100932 kB     94808 kB         0 kB         0 kB         0 kB         0 kB         0 kB     devhost.elf
969501            2256(0 in SwapPss) kB   2142484 kB      3892 kB      1620 kB         0 kB         0 kB         0 kB         0 kB         0 kB     hguard.elf
970586         1656(1412 in SwapPss) kB     32852 kB       744 kB       236 kB         0 kB         0 kB         0 kB         0 kB         0 kB     ueventd
971...
972```
973
974- 可使用hidumper -c命令获取全量信息簇信息。这包含上述base和system信息簇合集。
975
976
977## 获取系统故障日志
978
979可使用hidumper -e命令获取系统故障日志,打印对应故障日志的文件名及详细内容。
980
981```shell
982$ hidumper -e
983
984-------------------------------[faultlog]-------------------------------
985
986
987/data/log/faultlog/faultlogger/syswarning-com.ohos.sceneboard-20020022-20241106104006  -> 故障日志文件名
988
989Generated by HiviewDFX@OpenHarmony  -> 故障日志详细内容
990...
991```
992
993
994## 获取进程间通信信息
995
996可使用hidumper --ipc -a --start-stat/stop-stat/stat命令获取整机采集时间区间内IPC信息。
997
998打印效果为:
999
1000```shell
1001$ hidumper --ipc -a --start-stat
1002StartIpcStatistics pid:1473 success
1003StartIpcStatistics pid:775 success
1004StartIpcStatistics pid:1472 success
1005...
1006$ hidumper --ipc -a --stat
1007GlobalStatisticsInfo
1008CurrentPid:1473
1009TotalCount:3
1010TotalTimeCost:3783
1011--------------------------------ProcessStatisticsInfo-------------------------------
1012CallingPid:625
1013CallingPidTotalCount:3
1014...
1015$ hidumper --ipc -a --stop-stat
1016StopIpcStatistics pid:1473 success
1017StopIpcStatistics pid:775 success
1018StopIpcStatistics pid:1472 success
1019...
1020```
1021
1022可使用hidumper --ipc [pid] --start-stat/stop-stat/stat命令获取指定进程采集时间区间内的IPC信息。
1023
1024打印效果为:
1025
1026```shell
1027$ hidumper --ipc 1473 --start-stat
1028StartIpcStatistics pid:1473 success
1029$ hidumper --ipc 1473 --stat
1030GlobalStatisticsInfo
1031CurrentPid:1473
1032TotalCount:2
1033TotalTimeCost:2214
1034--------------------------------ProcessStatisticsInfo-------------------------------
1035CallingPid:625
1036CallingPidTotalCount:2
1037CallingPidTotalTimeCost:2214
1038~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~InterfaceStatisticsInfo~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1039DescriptorCode:OHOS.ILocalAbilityManager_6
1040DescriptorCodeCount:2
1041DescriptorCodeTimeCost:
1042Total:2214 | Max:1444 | Min:770 | Avg:1107
1043~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1044------------------------------------------------------------------------------------
1045
1046$ hidumper --ipc 1473 --stop-stat
1047StopIpcStatistics pid:1473 success
1048```
1049
1050
1051## 导出信息压缩存储
1052
1053hidumper提供有--zip命令支持将任意类型导出信息输出到 /data/log/hidumper 下的压缩文件,可以与其他命令组合使用,压缩格式为ZIP,文件命名为当前时间戳,如下打印效果所示。
1054
1055```shell
1056$ hidumper --zip
1057100%,[-],The result is:/data/log/hidumper/20250622-120444-166.zip
1058```
1059
1060例如,对于 hidumper -e 命令获取系统故障日志,其输出的文本内容较多,可以考虑使用压缩存储,打印效果如下:
1061
1062```shell
1063$ hidumper -e
1064
1065-------------------------------[faultlog]-------------------------------
1066
1067
1068/data/log/faultlog/faultlogger/syswarning-com.ohos.sceneboard-20020022-20241106104006  -> 故障日志文件名
1069
1070Generated by HiviewDFX@OpenHarmony
1071...  -> 故障日志详细内容,大量的文本内容,此处省略
1072$ hidumper -e --zip
1073100%,[-],The result is:/data/log/hidumper/20250623-092235-087.zip
1074```
1075
1076## 常用ArkUI基础信息显示能力
1077ArkUI基于hidumper增强开发了获取组件树等信息的能力。
1078### 获取应用窗口信息
1079打印全量窗口信息,可以在全量信息中找出对应窗口的WinId,将该WinId作为参数传递给其他命令以获取相关信息。
1080
1081```shell
1082hdc shell hidumper -s WindowManagerService -a '-a'
1083```
1084 **使用样例:**
1085```text
1086-------------------------------[ability]-------------------------------
1087
1088
1089----------------------------------WindowManagerService---------------------------------
1090-------------------------------------ScreenGroup 1-------------------------------------
1091WindowName             DisplayId Pid     WinId Type Mode Flag ZOrd Orientation [ x    y    w    h    ]
1092ScreenLockWindow       0         1274    2     2110 1    0    4    0           [ 0    0    720  1280 ]
1093SystemUi_NavigationBar 0         1274    5     2112 102  1    3    0           [ 0    1208 720  72   ]
1094SystemUi_StatusBar     0         1274    4     2108 102  1    2    0           [ 0    0    720  72   ]
1095settings0              0         10733   11    1    1    1    1    0           [ 0    72   720  1136 ]
1096EntryView              0         1546    8     2001 1    0    0    8           [ 0    0    720  1280 ]
1097---------------------------------------------------------------------------------------
1098SystemUi_VolumePanel   0         1274    3     2111 1    1    -1   0           [ 0    0    0    0    ]
1099SystemUi_DropdownPan   0         1274    6     2109 1    1    -1   0           [ 0    0    0    0    ]
1100SystemUi_BannerNotic   0         1274    7     2111 1    1    -1   0           [ 0    0    0    0    ]
1101RecentView             0         1546    9     2115 1    1    -1   0           [ 0    0    0    0    ]
1102imeWindow              0         1530    10    2105 1    1    -1   0           [ 0    0    0    0    ]
1103Focus window: 2
1104total window num: 10
1105```
1106
1107常见windowName与内置应用窗口的对应关系:
1108|windowName|内置应用窗口|
1109|---|---|
1110| EntryView|桌面|
1111| RecentView|最近任务|
1112| SystemUi_NavigationBar|三键导航|
1113|  SystemUi_StatusBar|状态栏|
1114| ScreenLockWindow|锁屏|
1115
1116### 获取期望应用组件树
1117如果需要查看应用中所有组件的信息,可以通过下列命令实现。
1118
1119```shell
1120hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -element'"
1121```
1122windowId是期望应用的窗口ID。
1123
1124**使用样例:**
1125
1126```text
1127hdc shell "hidumper -s WindowManagerService -a '-w 5 -element'"
1128
1129-------------------------------[ability]-------------------------------
1130----------------------------------WindowManagerService---------------------------------
1131WindowName: SystemUi_NavigationBar
1132DisplayId: 0
1133WinId: 5
1134Pid: 1274
1135Type: 2112
1136Mode: 102
1137Flag: 1
1138Orientation: 0
1139IsStartingWindow: false
1140FirstFrameCallbackCalled: 0
1141IsVisible: false
1142WindowRect: [ 0, 1208, 720, 72 ]
1143TouchHotAreas: [ 0, 1208, 720, 72 ]
1144  |-> RootElement childSize:1
1145    | ID: 0
1146    | elmtId: -1
1147    | retakeID: 16
1148    | Active: Y
1149    |-> StackElement childSize:2
1150      | ID: 1
1151      | elmtId: -1
1152      | retakeID: 14
1153      | Active: Y
1154      |-> StageElement childSize:1
1155        | ID: 2
1156        | elmtId: -1
1157        | retakeID: 13
1158        | Active: Y
1159        |-> PageElement childSize:1
1160          | ID: 3
1161          | elmtId: -1
1162          | retakeID: 569
1163          | Active: Y
1164......
1165```
1166
1167### 获取应用中指定Node的组件信息
1168如果只需要查看组件中某一节点的组件信息,可以通过下列命令实现。
1169
1170```shell
1171hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -element -lastpage %nodeID%'"
1172```
1173windowId是应用的窗口ID,nodeID是指定Node的ID。可以通过获取期望应用组件树的操作获取nodeID。
1174
1175**使用样例:**
1176```text
1177hdc shell "hidumper -s WindowManagerService -a '-w 5 -element -lastpage 3'"
1178
1179-------------------------------[ability]-------------------------------
1180----------------------------------WindowManagerService---------------------------------
1181WindowName: SystemUi_NavigationBar
1182DisplayId: 0
1183WinId: 5
1184Pid: 1274
1185Type: 2112
1186Mode: 102
1187Flag: 1
1188Orientation: 0
1189IsStartingWindow: false
1190FirstFrameCallbackCalled: 0
1191IsVisible: false
1192WindowRect: [ 0, 1208, 720, 72 ]
1193TouchHotAreas: [ 0, 1208, 720, 72 ]
1194    |-> PageElement childSize:1
1195        | ID: 3
1196        | elmtId: -1
1197        | retakeID: 569
1198        | Active: Y
1199......
1200```
1201
1202### 获取期望应用的Inspector树
1203上述示例中的element/render树主要包含多项内部实现,与应用代码中的组件无法一一对应。可以通过打印Inspector树来获取与应用中组件对应的树结构及组件基本信息。Inspector树与DevEco Testing及DevEco中的ArkUI Inspector完全匹配。
1204
1205使用此功能需要先打开ArkUI debug调试开关。
1206```shell
1207hdc shell param set persist.ace.testmode.enabled 1
1208```
1209set: 设置命令;persist.ace.testmode.enabled:ArkUI debug调试开关名称;1:开关设置为true,打开调试功能。
1210
1211命令如下:
1212```shell
1213hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -inspector'"
1214```
1215**使用样例:**
1216
1217```text
1218hdc shell "hidumper -s WindowManagerService -a '-w 5 -inspector'"
1219
1220|-> rootstacktag childSize:1
1221| ID: 2100001
1222| compid:
1223| text:
1224| top: 72.000000
1225| left: 0.000000
1226| width: 0.000000
1227| height: 0.000000
1228| visible: 1
1229| clickable: 0
1230| checkable: 0
1231|-> Column childSize:1
1232| ID: 128
1233| compid:
1234| text:
1235| top: 72.000000
1236| left: 0.000000
1237| width: 720.000000
1238| height: 1136.000000
1239| visible: 1
1240| clickable: 0
1241| checkable: 0
1242|-> GridContainer childSize:1
1243| ID: 129
1244| compid:
1245| text:
1246| top: 72.000000
1247| left: 0.000000
1248| width: 720.000000
1249| height: 1136.000000
1250| visible: 1
1251| clickable: 0
1252| checkable: 0
1253|-> Column childSize:2
1254| ID: 130
1255| compid:
1256| text:
1257| top: 72.000000
1258| left: 0.000000
1259| width: 720.000000
1260| height: 180.000000
1261| visible: 1
1262| clickable: 0
1263| checkable: 0
1264
1265......
1266```
1267
1268### 获取期望应用路由栈信息
1269
1270该命令将输出应用页面路由栈的信息,依据栈的创建顺序及其父子关系排列。
1271
1272> **说明:**
1273>
1274> 仅支持通过[Navigation](../ui/arkts-navigation-navigation.md)组件实现页面路由的应用。
1275
1276命令:
1277
1278```shell
1279hidumper -s WindowManagerService -a '-w %windowId% -navigation -c'
1280```
1281**使用样例:**
1282```text
1283hidumper -s WindowManagerService -a '-w 15 -navigation -c'
1284
1285-------------------------------[ability]-------------------------------
1286
1287
1288----------------------------------WindowManagerService--------------------------------
1289WindowName: myapplication0
1290DisplayId: 0
1291WinId: 12
1292Pid: 5908
1293Type: 1
1294Mode: 1
1295Flag: 0
1296Orientation: 0
1297IsStartingWindow: false
1298FirstFrameCallbackCalled: 1
1299VisibilityState: 0
1300Focusable: true
1301DecoStatus: true
1302IsPrivacyMode: false
1303isSnapshotSkip: 0
1304WindowRect: [ 0, 0, 720, 1280 ]
1305TouchHotAreas: [ 0, 0, 720, 1280 ]
1306bundleName:com.example.myapplication
1307moduleName:entry
1308 LastRequestVsyncTime: 2351504075334
1309 transactionFlags: [ 5908, 0 ]
1310 last vsyncId: 527
1311Navigation number: 4
1312|-> Navigation ID: 7, Depth: 7, Mode: "SPLIT", NavDestinations:
1313  | [0]{ ID: 0, Name: "pageOne", Mode: "STANDARD", IsOnShow: "FALSE" }
1314  | [1]{ ID: 1, Name: "pageTwo", Mode: "STANDARD", IsOnShow: "TRUE" }
1315|-> Navigation ID: 19, Depth: 7, Mode: "AUTO (STACK)", NavDestinations:
1316  |-> Navigation ID: 28, Depth: 11, Mode: "STACK", NavDestinations:
1317  | [0]{ ID: 2, Name: "pageOne", Mode: "STANDARD", IsOnShow: "FALSE" }
1318  | [1]{ ID: 3, Name: "pageTwo", Mode: "DIALOG", IsOnShow: "FALSE" }
1319    |-> Navigation ID: 123, Depth: 11, Mode: "AUTO (SPLIT)", NavDestinations:
1320      | [0]{ ID: 4, Name: "pageFive", Mode: "STANDARD", IsOnShow: "FALSE" }
1321      | [1]{ ID: 5, Name: "pageSix", Mode: "STANDARD", IsOnShow: "FALSE" }
1322  | [2]{ ID: 6, Name: "pageThree", Mode: "STANDARD", IsOnShow: "TRUE" }
1323```
1324> **说明:**
1325>
1326> 同一级别的节点,显示在最下方的节点为栈顶节点。
1327
1328## 常见问题
1329
1330
1331### hidumper 查询到的内存使用情况与hidebug接口获取到的内存使用情况之间的关系
1332
1333**现象描述**
1334
1335hidumper --mem 系列命令与[HiDebug](../reference/apis-performance-analysis-kit/js-apis-hidebug.md)接口获取到的内存信息存在差异。
1336
1337**可能原因&amp;解决方法**
1338
1339hidumper --mem命令与HiDebug接口内存获取功能详细对比参考下表。
1340
1341**表1**
1342
1343| 命令或接口 | 使用场景 | 数据来源 | 是否导出图形内存 |
1344| -------- | -------- | -------- | -------- |
1345| hidumper --mem | 命令行获取**所有进程**的内存使用情况 | 系统节点:/proc/pid/smaps_rollup | 是 |
1346| hidumper --mem [pid] | 命令行获取**单个进程**的内存使用情况 | 系统节点:/proc/pid/smaps | 是 |
1347| hidumper --mem-smaps [pid] | 命令行获取**单个进程**的详细内存使用情况 | 系统节点:/proc/pid/smaps_rollup | 否 |
1348| [hidebug.getAppNativeMemInfo](../reference/apis-performance-analysis-kit/js-apis-hidebug.md#hidebuggetappnativememinfo12) | 获取**应用自身**的内存使用情况 | 系统节点:/proc/pid/smaps_rollup | 否 |
1349
1350若想通过hidebug获取图形内存,请参考[HiDebug能力概述](hidebug-guidelines.md)中的相关说明。
1351
1352
1353### hidumper获取进程虚拟机内存和泄露对象信息为空
1354
1355**现象描述**
1356
1357通过hidumper --mem-jsheap [pid] --leakobj命令获取指定进程的虚拟机堆内存和泄露对象信息,该命令没有正常生成文件。
1358
1359**可能原因&amp;解决方法**
1360
1361hidumper --mem-jsheap [pid] --leakobj 命令依赖[JsLeakWatcher](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md)。应用需通过JsLeakWatcher接口开启泄漏检测功能。具体步骤参考:[查询虚拟机堆内存](#查询虚拟机堆内存)。
1362