hidumperFix:基于 OpenHarmony 的系统信息导出与故障定位项目

暂无描述

分支2Tags0
文件最后提交记录最后更新时间
1 年前
4 年前
19 天前
1 个月前
27 天前
7 个月前
1 个月前
19 天前
3 个月前
4 年前
7 个月前
3 年前
4 年前
4 年前
5 个月前
5 个月前
2 个月前
2 个月前
1 年前

HiDumper组件

简介

HiDumper是OpenHarmony中为开发、测试人员,IDE工具提供统一的系统信息获取工具,帮助使用者分析,定位问题。

HiDumper主要包括以下几个主要模块:

  • hidumper,hidumper工具的可执行程序,接收用户输入,与服务端通讯。
  • DumpManager,系统信息导出工具管理者,提供信息分类,命令请求分发和信息获取方法的管理。
  • Dumpers,各类信息的导出器。主要包括文件导出、命令导出、CPU使用导出、内存使用导出等。
  • Output,内容输出,主要包括向标准输出或文件输出的FdOutput,压缩输出的ZipOutput。

图1 HiDumper架构图

目录

/base/hiviewdfx/hidumper
├── client                # 客户端代码
│   ├── native            # 客户端native代码
├── frameworks            # 框架代码
│   ├── native            # 导出功能核心代码
|   |   |── include        # 头文件目录
|   |   |── src           # 源文件目录
|   |       |── common    # 通用功能代码
|   |       |── executor  # 导出过程执行器代码
|   |       |── factory   # 跟进导出项生成导出执行器
|   |       |── manager   # 导出管理核心代码
|   |       |── util      # 工具类源代码
|── sa_profile            # Hidumper sa 属性文件
|── services              # Hidumper服务源码
|   |── native            # 服务C++源码
|   |── zidl              # 通讯功能源码目录
|   |   |── include       # 通讯功能头文件
|   |   |── src           # 通讯功能源代码
├── test                  # 测试用例目录
│   ├── unittest          # 单元测试代码
│   ├── moduletest        # 模块级别测试代码

说明

开发者在OpenHarmony应用开发过程中需要查询系统信息,服务信息,进程栈等信息时可以通过HiDumper获取到对应信息,然后利用这些信息分析定位问题。

使用说明

hidumper可以为开发者导出系统当前基本信息,通过这些基本信息可以定位分析问题。给子服务和元能力传递复杂参数时,参数需要在双引号中。

具体步骤如下:

  1. 进入设备命令行,输入hidumper -h获取基本信息介绍,功能语法介绍。

    hidumper -h
    
  2. 输入hidumper -lc获取系统信息分类列表。

    hidumper -lc
    
  3. 输入hidumper -c 获取系统base、system等所有分类信息。

    hidumper -c
    
  4. 输入 hidumper -c [base system]basesystem 分类获取系统簇信息。

    hidumper -c base
    hidumper -c system
    
  5. 输入 hidumper -ls 命令获取系统中元能力列表。

    hidumper -ls
    
  6. 输入 hidumper -s 命令获取系统全部元能力信息。

    hidumper -s
    
  7. 运行 hidumper -s 3301 -a "-h" 命令获取id为3301的元能力的帮助。

    hidumper -s 3301  -a "-h"
    
  8. 运行 hidumper -s 3008 命令获取id为3008的元能力的全部信息。

    hidumper -s 3008
    
  9. 运行 hidumper -e 命令获取Faultlog模块生成的崩溃历史信息。

    hidumper -e
    
  10. 运行 hidumper --net [pid] 命令获取网络信息;如果指定了进程的pid,则只获取该进程的网络流量使用信息。

    hidumper --net
    hidumper --net 1024
    
  11. 运行 hidumper --storage [pid] 命令获取存储相关信息;如果指定了进程的pid,则只获取该进程的io信息。

    hidumper --storage
    hidumper --storage 1024
    
  12. 运行 hidumper -p 命令获取进程信息,包括进程、线程的列表和信息。

    hidumper -p
    
  13. 运行 hidumper -p 1024 命令获取pid为1024的进程信息。

    hidumper -p 1024
    
  14. 运行 hidumper --cpuusage [pid] 命令获取CPU的使用信息;如果指定了进程的pid,则只获取该进程的CPU使用信息。

    hidumper --cpuusage
    hidumper --cpuusage 1024
    
  15. 运行 hidumper --cpufreq 命令获取每一个CPU核实际运行的频率。

    hidumper --cpufreq
    
  16. 运行 hidumper --mem [pid] [--prune] [-t timeInterval] [--show-ashmem] [--show-dmabuf] [--show-gpumem] 命令获取全部的内存使用信息;如果指定进程的pid,只获取该进程的内存使用情况; 如果指定--prune,则导出精简内存信息; 指定具体pid和时间可以打印出pid的内存变化信息。如果指定 --show-ashmem,则补充打印ashmem使用详细信息。如果是应用进程,指定--show-dmabuf,则补充打印DMA内存详情信息。如果指定--show-gpumem,则打印gpu详细信息。

    hidumper --mem
    hidumper --mem 1024
    hidumper --mem --prune
    hidumper --mem 1 -t 1
    hidumper --mem 1024 --show-ashmem
    hidumper --mem 1024 --show-dmabuf
    hidumper --mem 1024 --show-gpumem
    
  17. 运行 hidumper --zip 命令压缩信息数据到/data/log/hidumper目录下。

    hidumper --zip
    
  18. 运行 hidumper --mem-smaps pid [-v] pid 必选参数。命令获取指定进程内存信息的详细使用情况。

    hidumper --mem-smaps pid [-v]
    
  19. 运行 hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw] pid 必选参数。命令触发所有线程gc和快照导出。如果指定线程的tid,只触发该线程gc和快照导出;如果指定--gc,只触发gc不做快照导出;如果指定--leakobj,则获取泄露对象的列表;如果指定--raw,则快速导出二进制格式的快照。

    hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw]
    
  20. 运行 hidumper --mem-cjheap pid [--gc] pid 必选参数,仓颉应用的进程号。命令触发仓颉进程的gc和快照导出。如果指定--gc,只触发gc不做快照导出。仓颉SDK中提供的cjprof工具可解析和查看快照文件。

    hidumper --mem-cjheap pid [--gc]
    

相关仓

DFX子系统

hiviewdfx_hilog

hiviewdfx_faultloggerd

hiviewdfx_hidumper