目录

hidumper

HiDumper是用于统一系统信息导出的命令行工具,支持分析CPU、内存、存储等系统资源使用情况,查询系统服务运行情况,定位资源使用异常、通信等相关问题。

针对HiDumper所支撑的使用场景,本章节将介绍其查询内存信息、查询CPU使用情况、查询系统能力、查询进程信息、查询存储信息、查询系统信息等基础功能,以及系统故障日志获取,进程间通信记录导出,导出信息支持压缩转储等能力。

HiDumper命令行工具使用常见问题汇总在常见问题章节。

环境要求

命令行说明

选项 说明
-h 帮助命令。
-lc 列出系统信息簇。
-ls 列出正在运行的系统能力。
-c 获取系统全量信息簇详细信息,包含设备信息、内核信息和环境变量等。
-c [base system] 获取指定信息簇详细信息,可选"base"或者"system"。
-s 获取所有系统能力详细信息。
-s [SA0 SA1] 获取一个或多个系统能力的详细信息。多个系统能力名称之间使用空格分隔。可通过 -ls 查询系统能力名称。
-s [SA] -a ["option"]

执行单个系统能力的特定选项。

SA:系统能力名称。

option:该系统能力支持的选项。可通过 -s [SA] -a ["-h"] 获取单个系统能力支持的所有选项。

-e 获取记录的故障日志。输出日志的规格可参考:CppCrash、JSCrash、AppFreeze。
-e --list [process_name] [-n num] [--since timestamp] [--until timestamp]

获取异常退出记录列表。

说明:从API version 22开始,支持该参数。

-e --print [process_name] [-n num] [--since timestamp] [--until timestamp]

获取异常退出故障日志。输出日志的规格可参考:CppCrash、JSCrash、AppFreeze。

说明:从API version 22开始,支持该参数。

-e --print record_id

获取指定异常退出记录id的故障日志。输出日志的规格可参考:CppCrash、JSCrash、AppFreeze。

说明:从API version 22开始,支持该参数。

--net [pid] 获取网络信息,包含网络流量、网络接口统计、IP信息等。如果指定了进程的pid,则只输出该进程的网络流量使用信息。
--storage [pid] 获取存储信息,包含磁盘统计、磁盘使用量、文件句柄等信息。如果指定了进程的pid,则只显示该进程的io信息。
-p [pid] 获取进程信息,包括进程和线程的列表和信息。
-p pid --fd/--thread [-v]

获取指定进程的文件句柄或线程信息。

指定-v时,打印详细信息。

说明:从API版本26.0.0开始,支持该参数。

--cpuusage [pid] 获取CPU使用率,取值范围(0, CPU核数],按进程和类别分类;如果指定pid,则获取指定pid的CPU使用率。
--cpufreq 获取CPU每个核的真实频率,单位:kHz。
--mem [--prune]

获取总内存使用情况。如果指定--prune,只导出精简的内存使用情况。

说明:从API version 20开始,支持--prune参数。

--mem pid [--show-ashmem] [--show-dmabuf] [--show-gpumem]

获取指定pid的进程内存使用情况。

指定--show-ashmem,则补充打印该进程的ashmem使用详细信息。

指定--show-dmabuf,则补充打印DMA内存使用详情信息。

指定--show-gpumem,则补充打印该进程的GPU内存使用详细信息。

说明:

从API version 20开始,支持--show-ashmem、应用进程的--show-dmabuf参数。

从API version 23开始,支持系统服务进程的--show-dmabuf参数。

从API version 24开始,支持进程的--show-gpumem参数。

--zip 保存命令输出到 /data/log/hidumper 下的压缩文件,压缩格式为 ZIP。
--ipc [pid]/-a --start-stat/stat/--stop-stat 统计一段时间进程IPC信息。如果使用-a,则统计所有进程IPC数据。使用--start-stat开始统计,使用--stat获取统计数据,使用--stop-stat结束统计。
--mem-smaps pid [-v]

获取pid内存统计信息,数据来源于/proc/pid/smaps,使用-v指定更多详细信息。(仅支持导出debug版本应用)

说明:从API version 20开始,支持该参数。

--mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw] [--clean] [--single]

必选参数pid。触发ArkTS应用JS线程的gc和堆内存快照导出。文件命名格式为:hidumper-jsheap-进程号-JS线程号-时间戳,文件内容为JSON结构的JS堆快照。

指定线程tid时,仅触发该线程的gc和堆内存快照导出。

指定--gc时,仅触发gc,不导出快照。

指定--leakobj时,应用开启泄漏检测可获取泄漏对象列表。

指定--raw时,堆快照以rawheap格式导出。

指定--clean时,快照导出后触发清理nodeId节点信息。

指定--single时,按进程导出一份快照,只支持rawheap格式,需配合--raw命令使用。

导出快照时,应用应处于亮屏场景。

说明:

从API version 19开始,支持--raw参数。

从API version 24开始,支持--clean参数。

从API版本26.0.0开始,支持--single参数。

从API版本26.0.0开始,release版本应用支持此命令,但需同时满足profileable标签、enterprise类型的appDistributionType且开发者模式打开。

--mem-heap pid ARG [--leakobj] [-T tid] [--raw]

导出指定类型的内存快照信息。ARG用于指定快照类型,支持--native、--jsvm、--kotlin、--arkweb-js等类型。

指定--leakobj时,只触发打印可疑内存泄漏点不做快照导出,仅配合--native参数使用。

指定线程tid时,仅触发该线程的虚拟机快照导出,仅配合--jsvm参数使用。

指定--raw时,虚拟机快照以rawheap格式导出,仅配合--jsvm、--arkweb-js参数使用。

指定--gc时,触发指定应用的render进程GC,仅配合--arkweb-js参数使用。

说明:从API版本26.0.0开始,支持--leakobj、-T tid、--raw参数。

查询内存信息

HiDumper内存信息查询模块主要用于查看系统整机内存使用情况和单个进程内存使用情况。开发者需要了解相关的内存基础知识。

[h2]查询整机内存

可使用hidumper --mem命令获取整机内存使用情况。

打印效果为:

$ hidumper --mem
-------------------------------[memory]-------------------------------
Total Memory Usage by PID:
PID       Total Pss(xxx in SwapPss)   Total Vss   Total Rss   Total Uss          GL       Graph         Dma     PurgSum     PurgPin    Name
1          4309(2216 in SwapPss) kB  2158196 kB     4180 kB     1760 kB        0 kB        0 kB        0 kB        0 kB        0 kB    init
2            45613(0 in SwapPss) kB 17452952 kB    48352 kB    44088 kB        0 kB        0 kB        0 kB        0 kB        0 kB    sysmgr-main
...
Total Memory Usage by Size:
PID        Total Pss(xxx in SwapPss)    Total Vss    Total Rss    Total Uss           GL        Graph          Dma      PurgSum      PurgPin     Name
3031         421826(0 in SwapPss) kB   5199308 kB    610812 kB    395712 kB         0 kB     17000 kB     17000 kB         0 kB         0 kB     xxx
1473         409349(0 in SwapPss) kB   7014040 kB    449460 kB    389528 kB    160336 kB     57092 kB     57092 kB         0 kB         0 kB     xxx
...
Total Pss by OOM adjustment:
System: 1426777 kB
   xxx(pid=1473):  409349 kB
   xxx(pid=992):     80734 kB (23720 kB in SwapPss)
...
Total Pss by Category:
File-backed Page(1414160 kB):
      1053457 kB : .so
       322813 kB : other
        25616 kB : .hap
         8064 kB : .ttf
         3696 kB : .db
          514 kB : dev
Anonymous Page(2280332 kB):
      1348463 kB : native heap
       518107 kB : ark ts heap
       361195 kB : other
        49287 kB : stack
         3280 kB : dev
            0 kB : guard
GPU(160340 kB):
       160340 kB : GL
Graph(350708 kB):
       350708 kB : Graph
DMA(350708 kB):
       350708 kB : Dma

      Total RAM:15803612 kB
       Free RAM:10287099 kB (3999535 cached + 6287564 free)
       Used RAM:3961668 kB (3163324 total pss + 798344 kernel)
       Lost RAM:2086013 kB

Total RAM by Category:
hidumper - Hardware Usage:1860480 kB
      CMA Usage:0 kB
-   Kernel Usage:656937 kB
Processes Usage:3694492 kB

Total Purgeable:
  Total PurgSum:0 kB
  Total PurgPin:0 kB

VSS (Virtual Set Size)表示当前进程虚拟内存的大小,包括所有映射到该进程地址空间的内存区域。

RSS (Resident Set Size)表示当前进程实际驻留在物理内存中的内存大小。

PSS (Proportional Set Size)是一种更精确的内存使用度量方法,它将共享库所占的内存按比例分配给每个使用该库的进程。

PurgSum(Purgeable Summary)表示当前进程可回收内存的总量。

PurgPin(Purgeable Pinned)表示可回收但暂时无法立即回收的内存。

GL代表GPU内存,包含应用使用的GPU内存和统一渲染在服务进程内产生的GPU内存。

Graph代表图形内存,即DMA内存。

可使用hidumper --mem --prune命令获取整机内存精简的使用情况。

打印效果为:

$ hidumper --mem --prune
-------------------------------[memory]-------------------------------
Total Memory Usage by PID:
PID        Total Pss(xxx in SwapPss)           GL     AdjLabel     Name
1           4061(1668 in SwapPss) kB         0 kB        -1000     xxx
2            101723(0 in SwapPss) kB         0 kB        -1000     xxx
...

AdjLabel代表该进程内存的回收优先级,取值范围为[-1000, 1000],该值越大则表示该进程越不重要,内存会被优先回收。

[h2]查询进程内存

可使用hidumper --mem pid命令获取指定进程的内存使用情况,pid为指定的进程号。

从API版本26.0.0开始支持对jsvm、arkweb-js、arkweb-pa、kotlin、rn-hermes、dart等堆内存信息的统计。

使用样例:

$ hidumper --mem 27336

-------------------------------[memory]-------------------------------

                          Pss         Shared         Shared        Private        Private           Swap        SwapPss           Heap           Heap           Heap
                        Total          Clean          Dirty          Clean          Dirty          Total          Total           Size          Alloc           Free
                       ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )
              ------------------------------------------------------------------------------------------------------------------------------------------------------
            GL              0              0              0              0              0              0              0              0              0              0
         Graph              0              0              0              0              0              0              0              0              0              0
   ark ts heap          12676           5516              0          12468              0           3068           3068              0              0              0
         guard              0              0              0              0              0              0              0              0              0              0
   native heap          15427          27132              0          14424              0          18776          18776          55796          53564           2809
          .hap              4              0              0              4              0              0              0              0              0              0
AnonPage other           1109           4932              0            968              0           4280           4280              0              0              0
         stack           1404              0              0           1404              0             28             28              0              0              0
           .db             32              0              0             32              0              0              0              0              0              0
           .so          12877          58928          18868           5628           2028           1036           1036              0              0              0
           dev             52              0            284             52              0              0              0              0              0              0
          .ttf            296           1264              0              0              0              0              0              0              0              0
FilePage other          21933           1432           4300          21524            148              0              0              0              0              0
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
         Total          92998          99204          23452          56504           2176          27188          27188          55796          53564           2809

native heap:
  jemalloc meta:          1010            276              0           1000              0            156            156              0              0              0
  jemalloc heap:         13126          22412              0          12260              0          17876          17876              0              0              0
       brk heap:          1259           4444              0           1132              0            744            744              0              0              0
      musl heap:            32              0              0             32              0              0              0              0              0              0

Purgeable:
        PurgSum:0 kB
        PurgPin:0 kB

DMA:
            Dma:0 kB

Ashmem:
Total Ashmem:144 kB

可使用hidumper --mem pid --show-ashmem获取指定pid的内存使用情况,同时打印ashmem使用详细信息。

使用样例:

$ hidumper --mem 27336 --show-ashmem
-------------------------------[memory]-------------------------------

                          Pss         Shared         Shared        Private        Private           Swap        SwapPss           Heap           Heap           Heap
                        Total          Clean          Dirty          Clean          Dirty          Total          Total           Size          Alloc           Free
                       ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )
              ------------------------------------------------------------------------------------------------------------------------------------------------------
            GL              0              0              0              0              0              0              0              0              0              0
         Graph              0              0              0              0              0              0              0              0              0              0
   ark ts heap          12657           5516              0          12468              0           3068           3068              0              0              0
         guard              0              0              0              0              0              0              0              0              0              0
   native heap          15191          27132              0          14252              0          18780          18780          55792          53527           2629
          .hap              4              0              0              4              0              0              0              0              0              0
AnonPage other           1094           4932              0            964              0           4280           4280              0              0              0
         stack           1388              0              0           1388              0             28             28              0              0              0
           .db             32              0              0             32              0              0              0              0              0              0
           .so          12557          59184          18868           5372           2028           1036           1036              0              0              0
           dev             52              0            284             52              0              0              0              0              0              0
          .ttf            296           1264              0              0              0              0              0              0              0              0
FilePage other          21916           1432           4300          21524            148              0              0              0              0              0
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
         Total          92379          99460          23452          56056           2176          27192          27192          55792          53527           2629

native heap:
  jemalloc meta:          1008            276              0           1000              0            156            156              0              0              0
  jemalloc heap:         12892          22412              0          12088              0          17880          17880              0              0              0
       brk heap:          1259           4444              0           1132              0            744            744              0              0              0
      musl heap:            32              0              0             32              0              0              0              0              0              0

Purgeable:
        PurgSum:0 kB
        PurgPin:0 kB

DMA:
            Dma:0 kB

Ashmem:
Total Ashmem:144 kB
Process_name    Process_ID      Fd      Cnode_idx       Applicant_Pid   Ashmem_name     Virtual_size    Physical_size   magic    -> 详细ashmem信息
wei.xxx.xxx  27336   72      328415  27336   dev/ashmem/Paf.Permission.appImg        147456  147456  14105

使用hidumper --mem pid --show-dmabuf命令可获取指定PID的内存使用情况,并打印DMA内存详细信息。

使用样例:

$ hidumper --mem 27336 --show-dmabuf
-------------------------------[memory]-------------------------------

                          Pss         Shared         Shared        Private        Private           Swap        SwapPss           Heap           Heap           Heap
                        Total          Clean          Dirty          Clean          Dirty          Total          Total           Size          Alloc           Free
                       ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )         ( kB )
              ------------------------------------------------------------------------------------------------------------------------------------------------------
            GL              0              0              0              0              0              0              0              0              0              0
         Graph              0              0              0              0              0              0              0              0              0              0
   ark ts heap          12657           5516              0          12468              0           3068           3068              0              0              0
         guard              0              0              0              0              0              0              0              0              0              0
   native heap          15191          27132              0          14252              0          18780          18780          55792          53527           2629
          .hap              4              0              0              4              0              0              0              0              0              0
AnonPage other           1094           4932              0            964              0           4280           4280              0              0              0
         stack           1388              0              0           1388              0             28             28              0              0              0
           .db             32              0              0             32              0              0              0              0              0              0
           .so          12557          59184          18868           5372           2028           1036           1036              0              0              0
           dev             52              0            284             52              0              0              0              0              0              0
          .ttf            296           1264              0              0              0              0              0              0              0              0
FilePage other          21916           1432           4300          21524            148              0              0              0              0              0
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
         Total          92379          99460          23452          56056           2176          27192          27192          55792          53527           2629

native heap:
  jemalloc meta:          1008            276              0           1000              0            156            156              0              0              0
  jemalloc heap:         12892          22412              0          12088              0          17880          17880              0              0              0
       brk heap:          1259           4444              0           1132              0            744            744              0              0              0
      musl heap:            32              0              0             32              0              0              0              0              0              0

Purgeable:
        PurgSum:0 kB
        PurgPin:0 kB

DMA:
            Dma:0 kB
Process               pid         fd        size_bytes        ino       exp_pid       exp_task_comm     buf_name      exp_name      buf_type      leak_type
m.xxx.xxx             7612        87        40960             2750      1424          allocatxxxx       RSxxxxxx      xxxxx          xx            xxxx

Ashmem:
Total Ashmem:144 kB

字段说明:

字段 说明
Process 持有ION内存块的应用进程包名(16个字符截断)。
pid 发生故障进程pid。
fd 进程持有的句柄。
size_bytes 进程持有的ION内存buffer大小,单位:B。
ino 文件inode号(索引节点号)。
exp_pid 从内核申请ION内存的进程pid。
exp_task_comm 从内核申请ION内存的进程名。
buf_name ION内存的buffer名字。
exp_name ION内存的buffer扩展名。
buf_type ION内存的buffer类型。
leak_type ION内存泄漏维测的buffer类型。

使用hidumper --mem pid --show-gpumem命令可获取指定PID的内存使用情况,并打印GPU内存详细信息。详细信息可参考ASHMEM/DMA/GPU/GPU_RS内存泄漏日志规格中gpu内存泄漏字段说明。

可使用hidumper --mem-smaps pid命令获取指定进程的详细内存使用情况,该命令会累加相同内存段的内存值。

使用样例:

$ hidumper --mem-smaps 3456  -> 3456 为目标可调试应用进程号

-------------------------------[memory]-------------------------------

                                    Shared      Shared      Private     Private
Size        Rss         Pss         Clean       Dirty       Clean       Dirty       Swap        SwapPss     Counts      Category                         Name
16          0           0           0           0           0           0           4           4           3           FilePage other                   [anon]
8           8           8           0           0           8           0           0           0           1           FilePage other                   /bin/init
2048        52          0           0           52          0           0           0           0           1           dev                              /dev/__parameters__/param_sec_dac
80          28          1           0           28          0           0           0           0           1           dev                              /dev/__parameters__/param_selinux
...

统计信息说明:

字段 说明
Name 虚拟内存映射名称。
Counts 相同Name内存段出现的次数。
Category 内存所属类别。

可使用hidumper --mem-smaps pid -v命令获取指定进程的详细内存使用情况,该命令会直接打印进程的所有内存信息,不会对相同内存信息做二次处理。

使用样例:

$ hidumper --mem-smaps 3456 -v  -> 3456 为目标可调试应用进程号

-------------------------------[memory]-------------------------------
                                    Shared      Shared      Private     Private
Size        Rss         Pss         Clean       Dirty       Clean       Dirty       Swap        SwapPss     Category                   Name
4           4           2           0           4           0           0           0           0           FilePage other             [anon]
4           4           2           0           4           0           0           0           0           FilePage other             /bin/init
...

注意事项

hidumper --mem-smaps [pid] [-v]命令调试的进程应为“使用调试证书签名的应用”,同debug版本应用。

要确认命令指定的应用是否为可调试应用,可以执行以下命令进行查询:hdc shell "bm dump -n [应用包名] | grep appProvisionType",预期返回信息为"appProvisionType": "debug"。

以包名com.example.myapplication为例,可执行如下命令查询:

hdc shell "bm dump -n com.example.myapplication | grep appProvisionType"

如包名对应的应用是可调试应用,预期返回信息:

"appProvisionType": "debug",

构建可调试应用需要使用调试证书进行签名,申请调试证书及签名可参考:申请调试证书。

[h2]查询虚拟机堆内存

使用hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw] [--clean] [--single]命令可以查看ArkTS应用虚拟机堆内存,使用hidumper --mem-heap pid ARG [--leakobj]命令可以查看指定虚拟机堆内存,ARG用于指定快照类型。生成的堆内存文件存放于/data/log/reliability/resource_leak/memory_leak目录。

hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw] [--clean] [--single],hidumper --mem-heap pid ARG [--leakobj]命令调试的进程应为“使用调试证书签名的应用”,同debug版本应用。

确认命令指定的应用是否为可调试应用:参考上述hidumper --mem-smaps [pid] [-v]命令中的注意事项。

  $ hidumper --mem-jsheap 64949  -> 64949 为目标应用进程号
  $ ls | grep jsheap   -> 进入堆内存文件存放目录后执行
  hidumper-jsheap-64949-64949-1751075546050
  hidumper-jsheap-64949-64989-1751075546050
  $ hidumper --mem-jsheap 64949 -T 64949  -> 64949 为目标应用进程号
  $ ls | grep jsheap  -> 进入堆内存文件存放目录后执行
  hidumper-jsheap-64949-64949-1751075567710
  $ hidumper --mem-jsheap 64949 --raw  -> 64949 为目标应用进程号
  $ ls | grep jsheap  -> 进入堆内存文件存放目录后执行
  hidumper-jsheap-64949-64949-1751075546050.rawheap
  hidumper-jsheap-64949-64989-1751075546050.rawheap
  $ hidumper --mem-jsheap 64949 -T 64949 --raw  -> 64949 为目标应用进程号
  $ ls | grep jsheap
  hidumper-jsheap-64949-64949-1751075546055.rawheap
  $ hidumper --mem-jsheap 64949 --leakobj
  $ ls | grep leaklist
  hidumper-leaklist-64949-1730873210483
    $ hidumper --mem-heap 65097 --native  -> 65097 为目标应用进程号
    $ ls | grep nativeheap -> 进入堆内存文件存放目录后执行
    hidumper-nativeheap-65097-1775640819058

解析说明:

该文件内容格式为二进制,需要使用十六进制编辑器查看。

4E 53 4E 41 50 31 2E 30 64 00 00 00 00 00 00 00
20 C0 E0 8F 5A 00 00 00 20 00 00 00 00 00 00 00
C0 B7 E0 8F 5A 00 00 00 40 00 00 00 00 00 00 00
60 80 E0 8F 5A 00 00 00 30 00 00 00 00 00 00 00
...

第一行的前8个字节4E 53 4E 41 50 31 2E 30,转成字符形式即为“NSNAP1.0”,代表了本文件的版本号,该字段固定不变。

第一行的后8个字节64 00 00 00 00 00 00 00,代表了泄漏点的数量,即0x0000000000000064,转成10进制为100,本次检测到了100个泄漏点,该值会随着上报的节点数量进行变化。

根据检测到的泄漏点数量,第二行开始会展示相对应数量的信息,每16字节为一组。

以第二行为例,前8字节代表地址:0x0000005A8FE0C020,后8字节代表大小:0x0000000000000020,即32个字节。

  $ hidumper --mem-heap 56032 --kotlin  -> 56032 为目标应用进程号
  $ ls | grep kotlinheap -> 进入堆内存文件存放目录后执行
  hidumper-kotlinheap-56032-1775640819058.kdump

上述生成的文件,可以通过hdc文件传输命令从设备中获取。

查询CPU使用情况

使用hidumper工具查看CPU相关信息,可以了解到当前系统的CPU负载情况。

[h2]查询整机CPU使用率

可使用hidumper --cpuusage获取整机CPU使用率。

打印效果为:

$ hidumper --cpuusage

-------------------------------[cpuusage]-------------------------------

Load average: 12.1 / 12.2 / 12.1; the cpu load average in 1 min, 5 min and 15 min
CPU usage from 2024-11-06 11:59:33 to 2024-11-06 11:59:38
Total: 6.38%; User Space: 2.57%; Kernel Space: 3.81%; iowait: 0.02%; irq: 0.14%; idle: 93.46%
Details of Processes:
    PID   Total Usage      User Space    Kernel Space    Page Fault Minor    Page Fault Major    Name
    105      109.01%           0.00%        109.01%             164                   0            tppmgr.elf
    2          0.89%           0.00%          0.89%               0                   0            sysmgr-main
...

[h2]查询进程CPU使用率

可使用hidumper --cpuusage pid获取指定进程的CPU使用率。

打印效果为:

$ hidumper --cpuusage 1

-------------------------------[cpuusage]-------------------------------

Load average: 12.1 / 12.2 / 12.1; the cpu load average in 1 min, 5 min and 15 min
CPU usage from 2024-11-06 11:59:33 to 2024-11-06 11:59:35
Total: 3.80%; User Space: 1.45%; Kernel Space: 2.35%; iowait: 0.00%; irq: 0.14%; idle: 96.06%
Details of Processes:
    PID   Total Usage      User Space    Kernel Space    Page Fault Minor    Page Fault Major    Name
    1          0.00%           0.00%          0.00%           38368                1394            init

[h2]查询CPU频率

可使用hidumper --cpufreq获取CPU频率信息。

打印效果为:

$ hidumper --cpufreq

-------------------------------[cpufreq]-------------------------------


cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

1018000

cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

1530000
...

查询系统服务

[h2]查询系统服务列表

打印效果为:

$ hidumper -ls
System ability list:
SystemAbilityManager             RenderService                    AbilityManagerService
DataObserverMgr                  AccountMgr                       AIEngine
BundleMgr                        FormMgr                          ApplicationManagerService
AccessibilityManagerService      UserIdmService                   UserAuthService
AuthExecutorMgrService           PinAuthService                   FaceAuthService
FingerprintAuthService           WifiDevice                       WifiHotspot
WifiP2p                          WifiScan                         1125
1126                             BluetoothHost                    NetConnManager
NetPolicyManager                 NetStatsManager                  NetTetheringManager
...

[h2]获取系统服务详细信息

打印效果为:

$ hidumper -s

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


----------------------------------SystemAbilityManager----------------------------------
The arguments are illegal and you can enter '-h' for help.

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


----------------------------------RenderService----------------------------------
------Graphic2D--RenderService ------
Usage:
h                             |help text for the tool
...

打印效果为:

$ hidumper -s WindowManagerService

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


----------------------------------WindowManagerService----------------------------------
Usage:
-h                             |help text for the tool
-a                             |dump all window information in the system
-w {window id} [ArkUI Option]  |dump specified window information
------------------------------------[ArkUI Option]------------------------------------
...
$ hidumper -s WindowManagerService RenderService

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


----------------------------------WindowManagerService----------------------------------
Usage:
-h                             |help text for the tool
-a                             |dump all window information in the system
-w {window id} [ArkUI Option]  |dump specified window information
------------------------------------[ArkUI Option]------------------------------------


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


----------------------------------RenderService----------------------------------
------Graphic2D--RenderService ------
Usage:
h                             |help text for the tool
screen                         |dump all screen information in the system
surface                        |dump all surface information
composer fps                   |dump the fps info of composer
...

[h2]获取指定系统服务提供的能力

可使用hidumper -s [SA] -a ["option"]可以获取指定系统服务提供的能力。

以RenderService系统渲染服务为例,获取其使用帮助,打印效果如下:

$ hidumper -s RenderService -a "h"

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

----------------------------------RenderService----------------------------------
------ Graphic2D--RenderService ------
Usage:
gles                          |inquire gpu info
h                             |help text for the tool
allInfo                       |dump all info
fpsCount                      |dump the refresh rate counts info
surfacenode                   |surfacenode [id]
trimMem                       |dump trim Mem info
surface                       |dump all surface information
MultiRSTrees                  |dump multi RS Trees info
fpsClear                      |[surface name]/composer fpsClear, clear the fps info
dumpMem                       |dump Cache
allSurfacesMem                |dump surface mem info
RSTree                        |dump RS Tree info
rsLogFlag                     |set rs log flag
nodeNotOnTree                 |dump nodeNotOnTree info
client                        |dump client ui node trees
clearFpsCount                 |clear the refresh rate counts info
hitchs                        |[windowname] hitchs, dump the hitchs info of window
vktextureLimit                |dump vk texture limit info
EventParamList                |dump EventParamList info
dumpNode                      |dump render node info
dumpExistPidMem               |dumpExistPidMem [pid], dump exist pid mem info
fps                           |[windowname] fps, dump the fps info of window
flushJankStatsRs              |flush rs jank stats hisysevent
screen                        |dump all screen information in the system

系统服务提供的具体功能,如获取GPU相关信息,可以使用以下命令,打印结果如下:

$ hidumper -s RenderService -a "gles"

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


----------------------------------RenderService----------------------------------

-- DumpGpuInfo:
GL_VENDOR: HUAWEI
GL_RENDERER: Maleoon 910
GL_VERSION: OpenGL ES 3.2 B283
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.20

查询进程信息

可使用hidumper -p [pid]命令获取指定进程的相关信息,包括进程的挂载信息,进程的线程信息,线程的运行时间,进程等待通道信息。

hidumper -p [pid]命令调试的进程应为“使用调试证书签名的应用”。

确认命令指定的应用是否为可调试应用:参考hidumper --mem-smaps [pid] [-v]命令中的介绍。

打印效果为:

$ hidumper -p 64949

-------------------------------[processes]-------------------------------


cmd is: ps -efT -p 64949

UID            PID   TID  PPID TCNT STIME TTY          TIME CMD
20020169     64949 64949   629   17 11:40:14 ?     00:00:00 com.example.jsleakwatcher
20020169     64949   733   629   17 11:40:28 ?     00:00:00 com.example.jsleakwatcher
...
$ hidumper -p

-------------------------------[processes]-------------------------------


cmd is: ps -efT

UID            PID   TID  PPID TCNT STIME TTY          TIME CMD
root             1     1     0    1 10:46:59 ?     00:00:08 init --second-stage 2389791
root             2     2     0  127 10:46:59 ?     00:00:24 [sysmgr-main]
root             2     4     0  127 10:46:59 ?     00:00:00 [call_ebr]
...

查询fd及线程信息

从API版本26.0.0开始,可使用-p pid --fd/--thread [-v]命令 获取指定进程的文件句柄或线程的摘要信息,其中-v选项为获取指定进程的文件句柄或线程的详细信息。

可使用-p pid --fd/--thread [-v]命令调试的进程应为“使用调试证书签名的应用”。

确认命令指定的应用是否为可调试应用:参考查询进程内存中的注意事项。

打印效果为:

$ hidumper -p 2121 --fd
fd num: 83
Summary:
Leaked fd:ashmem

Leaked fd Top 10:
23      ashmem
10      /data/storage/el1/database/phone_launcher/rdb/Launcher.db
8       socket
7       eventfd
6       eventpoll
5       /data/storage/el1/database/phone_launcher/rdb/Launcher.db-dwr
4       pipe
3       /dev/null
2       /proc/204/sched_rtg_ctrl
2       dmabuf
Top Dir 10:
2       /proc/
02      /proc/204/sched_rtg_ctrl
2       anon_inode:malitl_
01      anon_inode:malitl_2121_0xebd3d8a0
01      anon_inode:malitl_2121_0xec5d6c70
1       /dev/mali
01      /dev/mali0

$ hidumper -p 2121 --fd -v
fd num: 83
Summary:
Leaked fd:ashmem

Leaked fd Top 10:
23      ashmem
10      /data/storage/el1/database/phone_launcher/rdb/Launcher.db
8       socket
7       eventfd
6       eventpoll
5       /data/storage/el1/database/phone_launcher/rdb/Launcher.db-dwr
4       pipe
3       /dev/null
2       /proc/204/sched_rtg_ctrl
2       dmabuf
Top Dir 10:
2       /proc/
02      /proc/204/sched_rtg_ctrl
2       anon_inode:malitl_
01      anon_inode:malitl_2121_0xebd3d8a0
01      anon_inode:malitl_2121_0xec5d6c70
1       /dev/mali
01      /dev/mali0
Fd link counts:
anon_inode:malitl_2121_0xec5d6c70:1
/system/app/com.ohos.contacts/Contacts.hap:1
/dev/mali0:1
/system/app/com.ohos.photos/Photos.hap:1
...

$ hidumper -p 2121 --thread
Thread num: 43
Top 10 Thread Names:
4       mali-utility-wo
4       OS_GC_Thread
2       RSRenderThread
1       OS_FFRT_2_0
1       OS_FFRT_2_1
1       OS_FFRT_2_2
1       OS_FFRT_2_3
1       OS_FFRT_3_0
1       OS_FFRT_3_1
1       OS_FFRT_3_2

$ hidumper -p 2121 --thread -v
Thread num: 43
Top 10 Thread Names:
4       mali-utility-wo
4       OS_GC_Thread
2       RSRenderThread
1       OS_FFRT_2_0
1       OS_FFRT_2_1
1       OS_FFRT_2_2
1       OS_FFRT_2_3
1       OS_FFRT_3_0
1       OS_FFRT_3_1
1       OS_FFRT_3_2
tid     thread_name     start_time
2121    m.ohos.launcher 5033
3047    OS_IPC_0_3047   24094
3048    OS_DfxWatchdog  24095
3049    OS_IPC_1_3049   24095
3051    OS_IPC_2_3051   24098
3052    OS_IPC_3_3052   24098
3053    OS_FFRT_5_0     24099
...

其中--fd和--thread不能一起使用:

$ hidumper -p 2121 --fd --thread
hidumper: invalid arg: --fd and --thread cannot be used together

查询网络信息

可使用hidumper --net命令获取网络流量信息,网络接口统计信息、网口统计信息、IP信息、iptable信息和binder信息。该功能是通过netstat、ifconfig、iptables等系统命令获取网络信息。

打印效果为:

$ hidumper --net

-------------------------------[net traffic]-------------------------------

Received Bytes:0
Sent Bytes:51885

-------------------------------[net]-------------------------------

cmd is: netstat -nW  -> 通过netstat -nW命令查询网络连接、路由表、接口统计等网络相关信息。
...

可使用hidumper --net [pid]命令获取指定进程的网络流量信息。

打印效果为:

$ hidumper --net 1

-------------------------------[net traffic]-------------------------------

Received Bytes:0
Sent Bytes:51885

查询存储信息

打印效果为:

$ hidumper --storage

-------------------------------[storage]-------------------------------


cmd is: storaged -u -p
...

打印效果为:

$ hidumper --storage 1

-------------------------------[storage io]-------------------------------


/proc/1/io

rchar: 28848175
wchar: 4364169
syscr: 16886
syscw: 15866
read_bytes: 30617600
write_bytes: 10907648
cancelled_write_bytes: 734003

IO信息的相关字段解释如下:

查询系统信息

打印效果为:

$ hidumper -lc
System cluster list:
base                             system

例如可使用hidumper -c base命令获取设备信息、内核版本、启动参数和启动时间。打印效果为:

-------------------------------[base]-------------------------------

BuildId: ALN-AL00 5.0.1.XXX(XXX)   -> 设备信息
ReleaseType: Beta1
OsVersion: phone/HUAWEI/HUAWEI/ALN/HarmonyOS-5.0.1.XXX(Beta1)/ALN-AL10/ALN-AL10/XX/5.0.1.XXX/default
DeviceType: phone
...

/proc/version

Hongmeng version: HongMeng Kernel X.XX.XX  -> 内核版本

/proc/cmdline   -> 启动参数

ohos.boot.post_data_blks=0x0 ohos.boot.ptn_last_blk=0x772AFFF ...

cmd is: uptime -p

up 0 weeks, 0 days, 5 hours, 27 minutes   -> 启动时间

例如可使用hidumper -c system命令获取环境变量、内核模块信息、当前已加载的内核模块、slab信息、zone信息、vmstat、vmalloc信息、cpu频率信息和内存信息。打印效果为:

$ hidumper -c system

-------------------------------[system]-------------------------------


cmd is: printenv   -> 环境变量

_=/system/bin/printenv
LANG=en_US.UTF-8
HOME=/root
PULSE_STATE_PATH=/data/data/.pulse_dir/state
OLDPWD=/
PWD=/
TMP=/data/local/mtp_tmp/
PULSE_RUNTIME_PATH=/data/data/.pulse_dir/runtime
...

/proc/modules   -> 内核模块信息

modem_driver 1490944 24 - Live 0x0000000000000000
hmtpp_freq_dal_kirin 20480 0 [permanent], Live 0x0000000000000000 (O)
kconsole 20480 0 [permanent], Live 0x0000000000000000 (O)
hmtpp_dal 40960 2 hmtpp_freq_dal_kirin, Live 0x0000000000000000 (O)
...

cmd is: lsmod  -> 当前已加载的内核模块

Module                  Size  Used by
modem_driver         1490944  24
hmtpp_freq_dal_kirin    20480  0 [permanent]
kconsole               20480  0 [permanent]
hmtpp_dal              40960  2 hmtpp_freq_dal_kirin
...

/proc/slabinfo   -> slab 信息

slabinfo - version: 2.0
#name       <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <num_pool> <sharedavail> <reclaimable>
slab-[16]                  48459  54432     16    252      1 : tunables 0 0 0 : slabdata    215    216      4 0 0
slab-[24]                  78315  83328     24    168      1 : tunables 0 0 0 : slabdata    496    496      4 0 0
slab-[32]                   5834   9954     32    126      1 : tunables 0 0 0 : slabdata     79     79      4 0 0
...

/proc/zoneinfo   -> zone 信息

Node 0, zone      DMA
  per-node stats
      nr_inactive_anon 419922
      nr_active_anon 11737
      nr_inactive_file 381289
      nr_active_file 456643
...

/proc/vmstat   -> vmstat 信息

workingset_refault_anon    63071
workingset_refault_file        0
workingset_activate_anon     1742
workingset_activate_file        0
...

/proc/vmallocinfo   -> vmalloc 信息

0x0000000000000000-0x0000000000000000    4096 of_iomap+0xe4/0xec pages=1 phys=0xfb21b000 ioremap
0x0000000000000000-0x0000000000000000    4096 of_iomap+0xe4/0xec pages=1 phys=0xffb85000 ioremap
0x0000000000000000-0x0000000000000000    4152 gen_pool_add_owner+0x48/0xc0 pages=2 vmalloc
0x0000000000000000-0x0000000000000000    4096 of_iomap+0xe4/0xec pages=1 phys=0xee262000 ioremap
...

cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq   -> CPU 频率信息

1430000

cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

1530000

cmd is: cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq

1430000
...

-------------------------------[memory]-------------------------------     -> 内存信息
Total Memory Usage by PID:
PID        Total Pss(xxx in SwapPss)    Total Vss    Total Rss    Total Uss           GL        Graph          Dma      PurgSum      PurgPin     Name
1           4001(1672 in SwapPss) kB     59028 kB      5744 kB      1972 kB         0 kB         0 kB         0 kB         0 kB         0 kB     init
2             50451(0 in SwapPss) kB 18014398163279052 kB     52088 kB     49448 kB         0 kB         0 kB         0 kB         0 kB         0 kB     sysmgr-main
79             2741(0 in SwapPss) kB   2145468 kB      6052 kB      1292 kB         0 kB         0 kB         0 kB         0 kB         0 kB     crypto.elf
80             8796(0 in SwapPss) kB   2156116 kB     12584 kB      6940 kB         0 kB         0 kB         0 kB         0 kB         0 kB     devmgr.elf
85            96861(0 in SwapPss) kB  37180468 kB    100932 kB     94808 kB         0 kB         0 kB         0 kB         0 kB         0 kB     devhost.elf
501            2256(0 in SwapPss) kB   2142484 kB      3892 kB      1620 kB         0 kB         0 kB         0 kB         0 kB         0 kB     hguard.elf
586         1656(1412 in SwapPss) kB     32852 kB       744 kB       236 kB         0 kB         0 kB         0 kB         0 kB         0 kB     ueventd
...

获取系统故障日志

可使用hidumper -e命令获取系统故障日志,打印对应故障日志的文件名及详细内容。

$ hidumper -e

-------------------------------[faultlog]-------------------------------


/data/log/faultlog/faultlogger/syswarning-com.ohos.sceneboard-20020022-20241106104006  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...

获取异常退出记录列表

可使用hidumper -e --list命令获取异常退出记录列表。

$ hidumper -e --list
time                  foreground               reason              record_id              process_name
2025-09-26 15:45:06   False                    ThreadBlock6S       05233453489239878113   xxx.xxx.sceneboard
2025-09-26 15:45:03   False                    LowMemoryKill       23123453489239875544   xxx.xxx.sceneboard
2025-09-26 14:43:06   False                    LowMemoryKill       45453453489233242345   xxx.xxx.sceneboard
2025-09-26 12:42:05   True                     LowMemoryKill       45455345348923987811   xxx.xxx.sceneboard
2025-09-26 10:45:45   False                    LowMemoryKill       78767783489239873255   xxx.xxx.sceneboard
2025-09-26 10:40:06   False                    LowMemoryKill       78767783489239454666   xxx.xxx.systemui
...

可使用hidumper -e --list process_name命令可获取指定进程的异常退出记录列表。

$ hidumper -e --list sceneboard
time                  foreground               reason              record_id              process_name
2025-09-26 15:45:06   False                    ThreadBlock6S       05233453489239878113   xxx.xxx.sceneboard
2025-09-26 15:45:03   False                    LowMemoryKill       23123453489239875544   xxx.xxx.sceneboard
2025-09-26 14:43:06   False                    LowMemoryKill       45453453489233242345   xxx.xxx.sceneboard
2025-09-26 12:42:05   True                     LowMemoryKill       45455345348923987811   xxx.xxx.sceneboard
2025-09-26 10:45:45   False                    LowMemoryKill       78767783489239873255   xxx.xxx.sceneboard
...

可使用hidumper -e --list -n num命令获取异常退出记录列表,其中num参数用于指定要展示的记录条数。

$ hidumper -e --list -n 2
time                  foreground               reason              record_id              process_name
2025-09-26 15:45:06   False                    ThreadBlock6S       05233453489239878113   xxx.xxx.sceneboard
2025-09-26 15:45:03   False                    LowMemoryKill       23123453489239875544   xxx.xxx.sceneboard

可使用hidumper -e --list process_name -n num --since timestamp --until timestamp命令获取指定进程指定时间内最新num条异常退出记录列表,其中num参数控制展示条数,timestamp参数控制时间范围。

时间区间控制为前闭后开,且当起始时间和结束时间完全一致时,无法查到数据。

$ hidumper -e --list sceneboard -n 4 --since '2025-09-26 12:42:05' --until '2025-09-26 15:45:07'
time                  foreground               reason              record_id              process_name
2025-09-26 15:45:06   False                    ThreadBlock6S       05233453489239878113   xxx.xxx.sceneboard
2025-09-26 15:45:03   False                    LowMemoryKill       23123453489239875544   xxx.xxx.sceneboard
2025-09-26 14:43:06   False                    LowMemoryKill       45453453489233242345   xxx.xxx.sceneboard
2025-09-26 12:42:05   True                     LowMemoryKill       45455345348923987811   xxx.xxx.sceneboard
$ hidumper -e --list --since '2025-09-26 12:42:05' --until '2025-09-26 12:42:05'
no records found.

字段说明:

字段 说明
time 异常退出发生的时间。
foreground 异常退出发生时,进程是否在前台。True表示处于前台;False表示处于后台。
reason 异常退出原因,原因范围详见reason字段说明。
record_id 异常退出记录ID。
process_name 发生异常退出的进程名。

[h2]reason字段说明

以下异常退出原因,可参考应用终止分析思路和分析步骤进行问题排查处理。

类型 说明
IllegalAudioRendererBySuspend 应用未申请合理的后台任务,但是后台有大量音频播放。
LowMemoryKill 整机低内存。
OomKiller 整机内存耗尽,无法继续分配。
PowerSaveClean 整机切换到省电模式或应急模式。
ResourceLeak(AshmemLeak) 应用Ashmem内存占用超标。
ResourceLeak(GpuLeak) 应用GPU内存占用超标。
ResourceLeak(GpuRsLeak) 应用在Render Service进程内的GPU内存占用超标。
ResourceLeak(IonLeak) 应用的Ion内存占用超标。
RssThresholdKiller 应用的RSS(Resident Size Set)占用超标。
SwapFull 整机Swap空间耗尽。
ThreadBlock6S 应用主进程阻塞,该类型支持根据record_id查看故障日志详情。
AppInputBlock 输入事件无响应,该类型支持根据record_id查看故障日志详情。
LifecycleTimeout 生命周期超时,该类型支持根据record_id查看故障日志详情。
JsError JS崩溃,该类型支持根据record_id查看故障日志详情。
CppCrash Native崩溃,该类型支持根据record_id查看故障日志详情。

获取异常退出故障日志

可使用 hidumper -e --print 命令获取系统故障日志,打印文件名和详细内容。

异常退出记录最长保持30天,同一进程同类型的故障日志最多保留10条。查询的日志已被删除时,会给予提示。

$ hidumper -e --print

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926154006  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926124106  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926114206  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.systemui-20020022-20250926104506  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.hidumper-20020022-20250926104206  -> 故障日志文件名

The faultlog has been deleted by the system due to expiration.  -> 日志过期被删除提示

可使用hidumper -e --print process_name命令打印指定进程的系统故障日志文件名及详细内容。

$ hidumper -e --print systemui

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.systemui-20020022-20250926104506  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...

可使用hidumper -e --print -n num命令打印系统故障日志的文件名及详细内容,并限制打印文件数量。

$ hidumper -e --print -n 2

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926154006  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926124106  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

可使用hidumper -e --print process_name -n num --since timestamp --until timestamp命令获取系统故障日志,打印文件名和详细内容,同时限制指定进程的文件数量和时间范围。

$ hidumper -e --print sceneboard -n 2 --since '2025-09-26 12:40:05' --until '2025-09-26 15:45:07'

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926154006  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926124106  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

可使用hidumper -e --print record_id命令获取指定异常退出记录id的系统故障日志,包括文件名及详细内容。若无匹配记录,则提示查询失败原因。

$ hidumper -e --print 05233453489239878113

-------------------------------[faultlog]-------------------------------

/data/log/faultlog/faultlogger/xxxx-com.xxx.sceneboard-20020022-20250926104006  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS  -> 故障日志详细内容
...   -> 故障日志详细内容,大量的文本内容,此处省略

$ hidumper -e --print 23123453489239875544
this type of record does not have faultlog.  -> 查询失败原因

获取进程间通信信息

可使用hidumper --ipc -a --start-stat/stop-stat/stat命令获取整机采集时间区间内IPC信息。

打印效果为:

$ hidumper --ipc -a --start-stat
StartIpcStatistics pid:1473 success
StartIpcStatistics pid:775 success
StartIpcStatistics pid:1472 success
...
$ hidumper --ipc -a --stat
GlobalStatisticsInfo
CurrentPid:1473
TotalCount:3
TotalTimeCost:3783
--------------------------------ProcessStatisticsInfo-------------------------------
CallingPid:625
CallingPidTotalCount:3
...
$ hidumper --ipc -a --stop-stat
StopIpcStatistics pid:1473 success
StopIpcStatistics pid:775 success
StopIpcStatistics pid:1472 success
...

可使用hidumper --ipc [pid] --start-stat/stop-stat/stat命令获取指定进程采集时间区间内的IPC信息。

打印效果为:

$ hidumper --ipc 1473 --start-stat
StartIpcStatistics pid:1473 success
$ hidumper --ipc 1473 --stat
GlobalStatisticsInfo
CurrentPid:1473
TotalCount:2
TotalTimeCost:2214
--------------------------------ProcessStatisticsInfo-------------------------------
CallingPid:625
CallingPidTotalCount:2
CallingPidTotalTimeCost:2214
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~InterfaceStatisticsInfo~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DescriptorCode:OHOS.ILocalAbilityManager_6
DescriptorCodeCount:2
DescriptorCodeTimeCost:
Total:2214 | Max:1444 | Min:770 | Avg:1107
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------------------------------------------------------------------------------------

$ hidumper --ipc 1473 --stop-stat
StopIpcStatistics pid:1473 success

导出信息压缩存储

hidumper提供有--zip命令支持将任意类型导出信息输出到 /data/log/hidumper 下的压缩文件,可以与其他命令组合使用,压缩格式为ZIP,文件命名为当前时间戳,如下打印效果所示。

$ hidumper --zip
100%,[-],The result is:/data/log/hidumper/20250622-120444-166.zip

例如,对于 hidumper -e 命令获取系统故障日志,其输出的文本内容较多,可以考虑使用压缩存储,打印效果如下:

$ hidumper -e

-------------------------------[faultlog]-------------------------------


/data/log/faultlog/faultlogger/syswarning-com.ohos.sceneboard-20020022-20241106104006  -> 故障日志文件名

Generated by HiviewDFX@HarmonyOS
...  -> 故障日志详细内容,大量的文本内容,此处省略
$ hidumper -e --zip
100%,[-],The result is:/data/log/hidumper/20250623-092235-087.zip

常用ArkUI基础信息显示能力

ArkUI基于hidumper增强开发了获取组件树等信息的能力。

[h2]获取应用窗口信息

打印全量窗口信息,可以在全量信息中找出对应窗口的WinId,将该WinId作为参数传递给其他命令以获取相关信息。

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

使用样例:

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


----------------------------------WindowManagerService---------------------------------
-------------------------------------ScreenGroup 1-------------------------------------
WindowName             DisplayId Pid     WinId Type Mode Flag ZOrd Orientation [ x    y    w    h    ]
ScreenLockWindow       0         1274    2     2110 1    0    4    0           [ 0    0    720  1280 ]
SystemUi_NavigationBar 0         1274    5     2112 102  1    3    0           [ 0    1208 720  72   ]
SystemUi_StatusBar     0         1274    4     2108 102  1    2    0           [ 0    0    720  72   ]
settings0              0         10733   11    1    1    1    1    0           [ 0    72   720  1136 ]
EntryView              0         1546    8     2001 1    0    0    8           [ 0    0    720  1280 ]
---------------------------------------------------------------------------------------
SystemUi_VolumePanel   0         1274    3     2111 1    1    -1   0           [ 0    0    0    0    ]
SystemUi_DropdownPan   0         1274    6     2109 1    1    -1   0           [ 0    0    0    0    ]
SystemUi_BannerNotic   0         1274    7     2111 1    1    -1   0           [ 0    0    0    0    ]
RecentView             0         1546    9     2115 1    1    -1   0           [ 0    0    0    0    ]
imeWindow              0         1530    10    2105 1    1    -1   0           [ 0    0    0    0    ]
Focus window: 2
total window num: 10

常见windowName与内置应用窗口的对应关系:

windowName 内置应用窗口
EntryView 桌面
RecentView 最近任务
SystemUi_NavigationBar 三键导航
SystemUi_StatusBar 状态栏
ScreenLockWindow 锁屏

[h2]获取期望应用组件树

如果需要查看应用中所有组件的信息,可以通过下列命令实现。

hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -element'"

windowId是期望应用的窗口ID。

使用样例:

hdc shell "hidumper -s WindowManagerService -a '-w 5 -element'"

-------------------------------[ability]-------------------------------
----------------------------------WindowManagerService---------------------------------
WindowName: SystemUi_NavigationBar
DisplayId: 0
WinId: 5
Pid: 1274
Type: 2112
Mode: 102
Flag: 1
Orientation: 0
IsStartingWindow: false
FirstFrameCallbackCalled: 0
IsVisible: false
WindowRect: [ 0, 1208, 720, 72 ]
TouchHotAreas: [ 0, 1208, 720, 72 ]
  |-> RootElement childSize:1
    | ID: 0
    | elmtId: -1
    | retakeID: 16
    | Active: Y
    |-> StackElement childSize:2
      | ID: 1
      | elmtId: -1
      | retakeID: 14
      | Active: Y
      |-> StageElement childSize:1
        | ID: 2
        | elmtId: -1
        | retakeID: 13
        | Active: Y
        |-> PageElement childSize:1
          | ID: 3
          | elmtId: -1
          | retakeID: 569
          | Active: Y
......

[h2]获取应用中指定Node的组件信息

如果只需要查看组件中某一节点的组件信息,可以通过下列命令实现。

hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -element -lastpage %nodeID%'"

windowId是应用的窗口ID,nodeID是指定Node的ID。可以通过获取期望应用组件树的操作获取nodeID。

使用样例:

hdc shell "hidumper -s WindowManagerService -a '-w 5 -element -lastpage 3'"

-------------------------------[ability]-------------------------------
----------------------------------WindowManagerService---------------------------------
WindowName: SystemUi_NavigationBar
DisplayId: 0
WinId: 5
Pid: 1274
Type: 2112
Mode: 102
Flag: 1
Orientation: 0
IsStartingWindow: false
FirstFrameCallbackCalled: 0
IsVisible: false
WindowRect: [ 0, 1208, 720, 72 ]
TouchHotAreas: [ 0, 1208, 720, 72 ]
    |-> PageElement childSize:1
        | ID: 3
        | elmtId: -1
        | retakeID: 569
        | Active: Y
......

[h2]获取期望应用的Inspector树

上述示例中的element/render树主要包含多项内部实现,与应用代码中的组件无法一一对应。可以通过打印Inspector树来获取与应用中组件对应的树结构及组件基本信息。Inspector树与DevEco Testing及DevEco中的ArkUI Inspector完全匹配。

使用此功能需要先打开ArkUI debug调试开关。

hdc shell param set persist.ace.testmode.enabled 1

set: 设置命令;persist.ace.testmode.enabled:ArkUI debug调试开关名称;1:开关设置为true,打开调试功能。

命令如下:

hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -inspector'"

使用样例:

hdc shell "hidumper -s WindowManagerService -a '-w 5 -inspector'"

|-> rootstacktag childSize:1
| ID: 2100001
| compid:
| text:
| top: 72.000000
| left: 0.000000
| width: 0.000000
| height: 0.000000
| visible: 1
| clickable: 0
| checkable: 0
|-> Column childSize:1
| ID: 128
| compid:
| text:
| top: 72.000000
| left: 0.000000
| width: 720.000000
| height: 1136.000000
| visible: 1
| clickable: 0
| checkable: 0
|-> GridContainer childSize:1
| ID: 129
| compid:
| text:
| top: 72.000000
| left: 0.000000
| width: 720.000000
| height: 1136.000000
| visible: 1
| clickable: 0
| checkable: 0
|-> Column childSize:2
| ID: 130
| compid:
| text:
| top: 72.000000
| left: 0.000000
| width: 720.000000
| height: 180.000000
| visible: 1
| clickable: 0
| checkable: 0

......

[h2]获取期望应用路由栈信息

该命令将输出应用页面路由栈的信息,依据栈的创建顺序及其父子关系排列。

仅支持通过Navigation组件实现页面路由的应用。

命令:

hidumper -s WindowManagerService -a '-w %windowId% -navigation -c'

使用样例:

hidumper -s WindowManagerService -a '-w 15 -navigation -c'

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


----------------------------------WindowManagerService--------------------------------
WindowName: myapplication0
DisplayId: 0
WinId: 12
Pid: 5908
Type: 1
Mode: 1
Flag: 0
Orientation: 0
IsStartingWindow: false
FirstFrameCallbackCalled: 1
VisibilityState: 0
Focusable: true
DecoStatus: true
IsPrivacyMode: false
isSnapshotSkip: 0
WindowRect: [ 0, 0, 720, 1280 ]
TouchHotAreas: [ 0, 0, 720, 1280 ]
bundleName:com.example.myapplication
moduleName:entry
 LastRequestVsyncTime: 2351504075334
 transactionFlags: [ 5908, 0 ]
 last vsyncId: 527
Navigation number: 4
|-> Navigation ID: 7, Depth: 7, Mode: "SPLIT", NavDestinations:
  | [0]{ ID: 0, Name: "pageOne", Mode: "STANDARD", IsOnShow: "FALSE" }
  | [1]{ ID: 1, Name: "pageTwo", Mode: "STANDARD", IsOnShow: "TRUE" }
|-> Navigation ID: 19, Depth: 7, Mode: "AUTO (STACK)", NavDestinations:
  |-> Navigation ID: 28, Depth: 11, Mode: "STACK", NavDestinations:
  | [0]{ ID: 2, Name: "pageOne", Mode: "STANDARD", IsOnShow: "FALSE" }
  | [1]{ ID: 3, Name: "pageTwo", Mode: "DIALOG", IsOnShow: "FALSE" }
    |-> Navigation ID: 123, Depth: 11, Mode: "AUTO (SPLIT)", NavDestinations:
      | [0]{ ID: 4, Name: "pageFive", Mode: "STANDARD", IsOnShow: "FALSE" }
      | [1]{ ID: 5, Name: "pageSix", Mode: "STANDARD", IsOnShow: "FALSE" }
  | [2]{ ID: 6, Name: "pageThree", Mode: "STANDARD", IsOnShow: "TRUE" }

同一级别的节点,显示在最下方的节点为栈顶节点。

常见问题

[h2]hidumper 查询到的内存使用情况与Hidebug接口获取到的内存使用情况之间的关系

现象描述

hidumper --mem 系列命令与HiDebug接口获取到的内存信息存在差异。

可能原因&解决方法

hidumper --mem命令与HiDebug接口内存获取功能详细对比参考下表。

表1

命令或接口 使用场景 数据来源 是否导出图形内存
hidumper --mem 命令行获取所有进程的内存使用情况 系统节点:/proc/pid/smaps_rollup 是
hidumper --mem [pid] 命令行获取单个进程的内存使用情况 系统节点:/proc/pid/smaps 是
hidumper --mem-smaps [pid] 命令行获取单个进程的详细内存使用情况 系统节点:/proc/pid/smaps_rollup 否
hidebug.getAppNativeMemInfo 获取应用自身的内存使用情况 系统节点:/proc/pid/smaps_rollup 否

若想通过Hidebug获取图形内存,请参考HiDebug能力概述中的相关说明。

[h2]hidumper获取进程虚拟机内存和泄漏对象信息为空

现象描述

通过hidumper --mem-jsheap [pid] --leakobj命令获取指定进程的虚拟机堆内存和泄漏对象信息,该命令没有正常生成文件。

可能原因&解决方法

hidumper --mem-jsheap [pid] --leakobj 命令依赖JsLeakWatcher。应用需通过JsLeakWatcher接口开启泄漏检测功能。具体步骤参考:查询虚拟机堆内存。