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 is a command line tool used to export system information. It can analyze the usage of system resources such as CPU, memory, and storage, query the running status of system services, and locate resource usage exceptions and communication problems. 11 12 13Based on the application scenarios supported by hidumper, this topic describes the following basic capabilities: querying memory, CPU usage, system capabilities, process, storage, and system information, obtaining system fault logs, exporting inter-process communication records, and compressing and dumping exported information. 14 15 16For FAQs about hidumper, see [FAQs](#faqs). 17 18 19## Environment Setup 20 21- The [environment setup](hdc.md#environment-setup) is complete. 22 23- The devices are properly connected and **hdc shell** is executed. 24 25 26## Command Description 27 28| Commands| Description| 29| -------- | -------- | 30| -h | Displays help information.| 31| [-lc](#querying-system-information)| Lists system information clusters.| 32| [-ls](#querying-system-service-list)| Lists the running system capabilities.| 33| [-c](#querying-system-information)| Obtains the detailed information about all system information clusters, including device information, kernel information, and environment variables.| 34| [-c [base system]](#querying-system-information)| Obtains details about a specified information cluster, which can be **base** or **system**.| 35| [-s](#obtaining-system-service-details)| Obtains the detailed information about all system capabilities.| 36| [-s [SA0 SA1]](#obtaining-system-service-details)| Obtains the detailed information about one or more system capabilities. Multiple system capability names are separated by spaces. You can run **-ls** to query the system capability name.| 37| [-s [SA] -a ["option"]](#obtaining-capabilities-of-a-specified-system-service)| Executes a specific option of a system capability.<br>**SA**: system capability name.<br>**option**: options supported by the system capability. You can run **-s [SA] -a ["-h"]** to obtain all options supported by a system capability.| 38| [-e](#obtaining-system-fault-logs)| Obtains fault logs.| 39| [--net [pid]](#querying-network-information)| Obtains network information, including network traffic, network API statistics, and IP information. If **pid** is specified, obtains only the network traffic usage of the specified process.| 40| [--storage [pid]](#querying-storage-information)| Obtains storage information, including disk statistics, disk usage, and file handles. If **pid** is specified, the I/O information of the specified process is displayed.| 41| [-p [pid]](#querying-process-information)| Obtains all process and thread information.| 42| [--cpuusage [pid]](#querying-process-cpu-usage)| Obtains the CPU usage by process and category. If a PID is specified, the CPU usage of the specified PID is displayed. The value range is (0, Number of CPU cores].| 43| [--cpufreq](#querying-cpu-frequency)| Obtains the actual CPU frequency of each core, in kHz.| 44| [--mem [--prune]](#querying-device-memory)| Obtains the total memory usage. If **--prune** is specified, only simplified memory usage is exported.| 45| [--mem pid [--show-ashmem]](#querying-process-memory)| Obtains the memory usage of a specified process. If **--show-ashmem** is specified, detailed ashmem usage information is also printed. <br />Note:Since API version 20, the **--show-ashmem** parameter is surpported。 | 46| [--zip](#compressing-exported-information)| Saves the command output to a compressed file in ZIP format in **/data/log/hidumper**.| 47| [--ipc [pid]/-a --start-stat/stat/--stop-stat](#obtaining-ipc-information)| Collects IPC information of a process in a specified period. If **-a** is used, IPC information of all processes is collected. **--start-stat** starts the IPC information collection. **--stat** obtains the IPC information. **--stop-stat** stops the IPC information collection.| 48| [--mem-smaps pid [-v]](#querying-process-memory)| Obtains the memory usage of a specified process from **/proc/pid/smaps**. **-v** is used to specify more details about the process. (This command is available only for [applications of the debug version](performance-analysis-kit-terminology.md#applications-of-the-debug-version).)| 49| [--mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw]](#querying-vm-heap-memory)| Triggers GC and exports a heap snapshot for the JS thread of the ArkTS application. The **pid** parameter is mandatory. If **tid** is specified, only the thread's GC is triggered and its heap memory snapshot is exported. If **--gc** is specified, only GC is triggered and the snapshot is not exported. If **--leakobj** is specified, the list of leaked objects can be obtained after leak detection is enabled for the application.<br>The file name format is **jsheap-Process ID-JS thread ID-Timestamp**. The file content is a JSON-structured JS heap snapshot.<br>If **--raw** is specified, the heap snapshot is exported in .rawheap format.| 50| [--mem-cjheap pid [--gc]](#querying-vm-heap-memory)| Triggers GC and exports a heap snapshot for the Cangjie application. The **pid** parameter is mandatory. If **--gc** is specified, only GC is triggered. No snapshot is exported.<br>Note: This parameter is supported since API version 20.| 51 52## Querying Memory Information 53 54The hidumper memory information query module is used to view device memory usage and process memory usage. To use this module, you need to understand the [basic memory knowledge](https://developer.huawei.com/consumer/en/doc/best-practices/bpta-memory-basic-knowledge). 55 56### Querying Device Memory 57 58Run the **hidumper --mem** command to obtain the device memory usage. 59 60The output is as follows: 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 118Virtual Set Size (VSS) is the virtual memory size of the process, including all memory areas mapped to the process address space. 119 120Resident Set Size (RSS) is the size of memory actually resident in physical memory for the process. 121 122Proportional Set Size (PSS) is a more accurate method of measuring memory usage. It allocates the memory consumed by shared libraries among all processes using them in proportion to their actual share. 123 124Purgeable Summary (PurgSum) is the total amount of memory that can be reclaimed by the process. 125 126Purgeable Pinned (PurgPin) is memory that is reclaimable but not immediately reclaimable. 127 128Graphics Library (GL) is graphics memory, which includes the application texture memory and graphics rendering memory. The values of **Graph** and **Dma** are the same. 129 130You can run the **hidumper --mem --prune** command to obtain the simplified device memory usage. 131 132The output is as follows: 133 134```shell 135$ hidumper --mem --prune 136-------------------------------[memory]------------------------------- 137Total Memory Usage by PID: 138PID Total Pss(xxx in SwapPss) GL AdjLabel Name 1391 4061(1668 in SwapPss) kB 0 kB -1000 xxx 1402 101723(0 in SwapPss) kB 0 kB -1000 xxx 141... 142``` 143 144AdjLabel indicates the memory reclaim priority of the process. The value ranges from -1000 to 1000. A larger value indicates that the process is less important, and the memory is reclaimed first. 145 146 147### Querying Process Memory 148 149Run the **hidumper --mem pid** command to obtain the memory usage of a specified process. **pid** indicates the process ID. 150 151Example: 152 153```shell 154$ hidumper --mem 27336 155 156-------------------------------[memory]------------------------------- 157 158 Pss Shared Shared Private Private Swap SwapPss Heap Heap Heap 159 Total Clean Dirty Clean Dirty Total Total Size Alloc Free 160 ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) 161 ------------------------------------------------------------------------------------------------------------------------------------------------------ 162 GL 0 0 0 0 0 0 0 0 0 0 163 Graph 0 0 0 0 0 0 0 0 0 0 164 ark ts heap 12676 5516 0 12468 0 3068 3068 0 0 0 165 guard 0 0 0 0 0 0 0 0 0 0 166 native heap 15427 27132 0 14424 0 18776 18776 55796 53564 2809 167 .hap 4 0 0 4 0 0 0 0 0 0 168AnonPage other 1109 4932 0 968 0 4280 4280 0 0 0 169 stack 1404 0 0 1404 0 28 28 0 0 0 170 .db 32 0 0 32 0 0 0 0 0 0 171 .so 12877 58928 18868 5628 2028 1036 1036 0 0 0 172 dev 52 0 284 52 0 0 0 0 0 0 173 .ttf 296 1264 0 0 0 0 0 0 0 0 174FilePage other 21933 1432 4300 21524 148 0 0 0 0 0 175-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 176 Total 92998 99204 23452 56504 2176 27188 27188 55796 53564 2809 177 178native heap: 179 jemalloc meta: 1010 276 0 1000 0 156 156 0 0 0 180 jemalloc heap: 13126 22412 0 12260 0 17876 17876 0 0 0 181 brk heap: 1259 4444 0 1132 0 744 744 0 0 0 182 musl heap: 32 0 0 32 0 0 0 0 0 0 183 184Purgeable: 185 PurgSum:0 kB 186 PurgPin:0 kB 187 188DMA: 189 Dma:0 kB 190 191Ashmem: 192Total Ashmem:144 kB 193``` 194 195Run the **hidumper --mem pid --show-ashmem** command to obtain the memory usage of a specified PID and print the detailed ashmem usage information. 196 197Example: 198 199```shell 200$ hidumper --mem 27336 --show-ashmem 201-------------------------------[memory]------------------------------- 202 203 Pss Shared Shared Private Private Swap SwapPss Heap Heap Heap 204 Total Clean Dirty Clean Dirty Total Total Size Alloc Free 205 ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) ( kB ) 206 ------------------------------------------------------------------------------------------------------------------------------------------------------ 207 GL 0 0 0 0 0 0 0 0 0 0 208 Graph 0 0 0 0 0 0 0 0 0 0 209 ark ts heap 12657 5516 0 12468 0 3068 3068 0 0 0 210 guard 0 0 0 0 0 0 0 0 0 0 211 native heap 15191 27132 0 14252 0 18780 18780 55792 53527 2629 212 .hap 4 0 0 4 0 0 0 0 0 0 213AnonPage other 1094 4932 0 964 0 4280 4280 0 0 0 214 stack 1388 0 0 1388 0 28 28 0 0 0 215 .db 32 0 0 32 0 0 0 0 0 0 216 .so 12557 59184 18868 5372 2028 1036 1036 0 0 0 217 dev 52 0 284 52 0 0 0 0 0 0 218 .ttf 296 1264 0 0 0 0 0 0 0 0 219FilePage other 21916 1432 4300 21524 148 0 0 0 0 0 220-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 221 Total 92379 99460 23452 56056 2176 27192 27192 55792 53527 2629 222 223native heap: 224 jemalloc meta: 1008 276 0 1000 0 156 156 0 0 0 225 jemalloc heap: 12892 22412 0 12088 0 17880 17880 0 0 0 226 brk heap: 1259 4444 0 1132 0 744 744 0 0 0 227 musl heap: 32 0 0 32 0 0 0 0 0 0 228 229Purgeable: 230 PurgSum:0 kB 231 PurgPin:0 kB 232 233DMA: 234 Dma:0 kB 235 236Ashmem: 237Total Ashmem:144 kB 238Process_name Process_ID Fd Cnode_idx Applicant_Pid Ashmem_name Virtual_size Physical_size magic -> Detailed ashmem information 239wei.xxx.xxx 27336 72 328415 27336 dev/ashmem/Paf.Permission.appImg 147456 147456 14105 240``` 241 242Run the **hidumper --mem-smaps pid** command to obtain the detailed memory usage of a specified process. This command aggregates values for identical memory segments. 243 244Example: 245 246```txt 247$ hidumper --mem-smaps 3456 # 3456 indicates the process ID of the target debuggable application. 248 249-------------------------------[memory]------------------------------- 250 251 Shared Shared Private Private 252Size Rss Pss Clean Dirty Clean Dirty Swap SwapPss Counts Category Name 25316 0 0 0 0 0 0 4 4 3 FilePage other [anon] 2548 8 8 0 0 8 0 0 0 1 FilePage other /bin/init 2552048 52 0 0 52 0 0 0 0 1 dev /dev/__parameters__/param_sec_dac 25680 28 1 0 28 0 0 0 0 1 dev /dev/__parameters__/param_selinux 257... 258``` 259 260Statistics 261 262| Field| Description| 263| -------- | -------- | 264| Counts | Number of occurrences of the same memory segment.| 265| Category | Memory category.| 266 267Run the **hidumper --mem-smaps pid -v** command to obtain the detailed memory usage of a specified process. This command directly prints all memory information of the process and does not perform secondary processing on the same memory information. 268 269 270Example: 271 272```txt 273$ hidumper --mem-smaps 3456 -v # 3456 indicates the process ID of the target debuggable application. 274 275-------------------------------[memory]------------------------------- 276 Shared Shared Private Private 277Size Rss Pss Clean Dirty Clean Dirty Swap SwapPss Category Name 2784 4 2 0 4 0 0 0 0 FilePage other [anon] 2794 4 2 0 4 0 0 0 0 FilePage other /bin/init 280... 281``` 282 283**NOTE** 284 285The **hidumper --mem-smaps \[pid] \[-v]** command should be used for [applications of the debug version](performance-analysis-kit-terminology.md#applications-of-the-debug-version). 286 287To check whether the application specified by the command is a debug application, run the **hdc shell "bm dump -n [application bundle name] | grep appProvisionType"** command. The expected result is **"appProvisionType": "debug"**. 288 289For example, run the following command to check the bundle name **com.example.myapplication**: 290 291```shell 292hdc shell "bm dump -n com.example.myapplication | grep appProvisionType" 293``` 294 295If the application is a debug application, the following information is displayed: 296 297```shell 298"appProvisionType": "debug", 299``` 300 301To build a debug application, you need to use a debug certificate for signature. For details about how to request and use the debug certificate, see [Requesting a Debug Certificate](https://developer.huawei.com/consumer/en/doc/app/agc-help-add-debugcert-0000001914263178). 302 303 304### Querying VM Heap Memory 305 306<!--RP2--> 307Run the **hidumper --mem-jsheap pid [-T tid] [--gc] [--leakobj] [--raw]** command to check the ArkTS application VM heap memory, and run the **hidumper --mem-cjheap pid [--gc]** command to check the Cangjie application VM heap memory. Heap memory files are stored in **/data/log/faultlog/temp**. 308<!--RP2End--> 309 310> **NOTE** 311> 312> The **hidumper --mem-jsheap pid \[-T tid] \[--gc] \[--leakobj] \[--raw]** command should be used for [applications of the debug version](performance-analysis-kit-terminology.md#applications-of-the-debug-version). 313> 314> For details about how to check whether the application specified by the command is debuggable, see "NOTE" in the **hidumper --mem-smaps [pid] [-v]** command. 315 316- Run the **hidumper --mem-jsheap pid** command to obtain the VM heap memory of all JavaScript threads of a specified process. The file name is in the format of **jsheap-Process ID-JS thread ID-Timestamp**. If there are multiple JavaScript threads, multiple files are generated. 317 318 Example: 319 320 <!--RP3--> 321 ```shell 322 $ hidumper --mem-jsheap 64949 -> 64949 indicates the process ID of the target application. 323 $ ls | grep jsheap -> Go to the heap memory file directory and run the command. 324 jsheap-64949-64949-1751075546050 325 jsheap-64949-64989-1751075546050 326 ``` 327 <!--RP3End--> 328 329- Run the **hidumper --mem-jsheap pid -T tid** command to obtain the VM heap memory of the specified JavaScript thread of a specified process. The file name is in the format of **jsheap-Process ID-JS thread ID-Timestamp**. 330 331 Example: 332 333 <!--RP4--> 334 ```shell 335 $ hidumper --mem-jsheap 64949 -T 64949 -> 64949 indicates the process ID of the target application. 336 $ ls | grep jsheap -> Go to the heap memory file directory and run the command. 337 jsheap-64949-64949-1751075567710 338 ``` 339 <!--RP4End--> 340 341- Run the **hidumper --mem-jsheap pid \[-T tid] --raw** command to obtain the VM heap memory of a specified process or JavaScript thread. The generated heap memory file is in .rawheap format and named in the format of **jsheap-Process ID-JS thread ID-Timestamp.rawheap**. For details about how to parse and convert the .rawheap file, see [rawheap-translator](../tools/rawheap-translator.md). 342 343 Example: 344 345 <!--RP5--> 346 ```shell 347 $ hidumper --mem-jsheap 64949 --raw -> 64949 indicates the process ID of the target application. 348 $ ls | grep jsheap -> Go to the heap memory file directory and run the command. 349 jsheap-64949-64949-1751075546050.rawheap 350 jsheap-64949-64989-1751075546050.rawheap 351 $ hidumper --mem-jsheap 64949 -T 64949 --raw -> 64949 indicates the process ID of the target application. 352 $ ls | grep jsheap 353 jsheap-64949-64949-1751075546055.rawheap 354 ``` 355 <!--RP5End--> 356 357- Run the **hidumper --mem-jsheap pid --gc** command to trigger GC for a specified application process. If this command is executed successfully, no file is generated. 358 359 Example: 360 361 ```shell 362 $ hidumper --mem-jsheap 64949 --gc -> 64949 indicates the process ID of the target application. 363 ``` 364 365- Run the **hidumper --mem-jsheap pid --leakobj** command to obtain the VM heap memory and leaked object information of a specified process. The file is named in format of **leaklist-Process ID-Timestamp**. 366 367 > **NOTE** 368 > 369 > Before obtaining the VM heap memory and leaked object information of a specified process, ensure that the leak detection functionality is enabled for the application using the [@ohos.hiviewdfx.jsLeakWatcher (JS Leak Detection)](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md) API. 370 > 371 > The procedure is as follows: 372 > 373 > 1. The application calls the [jsLeakWatcher.enable](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md#jsleakwatcherenable) API. 374 > 2. The application calls the [jsLeakWatcher.watch](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md#jsleakwatcherwatch) API. 375 > 3. Run the **hidumper --mem-jsheap [pid] --leakobj** command to export the VM heap memory and leaked object information. 376 377 Example: 378 379 <!--RP7--> 380 ```shell 381 $ hidumper --mem-jsheap 64949 --leakobj 382 $ ls | grep leaklist 383 leaklist-64949-1730873210483 384 ``` 385 <!--RP7End--> 386 387 <!--Del--> 388- Run the **hidumper --mem-cjheap pid** command to obtain the VM heap memory of a specified Cangjie process. The file name format is **cjheap-Process ID-Timestamp**. 389 390 Example: 391 392 ```shell 393 $ hidumper --mem-cjheap 65012 -> 65012 indicates the process ID of the target application. 394 $ ls | grep cjheap -> Run this command in the heap memory file directory. 395 cjheap-65012-1751075546050 396 ``` 397 398- Run the **hidumper --mem-cjheap pid --gc** command to trigger GC for a specified Cangjie application process. If this command is executed successfully, no file is generated. 399 400 Example: 401 402 ```shell 403 $ hidumper --mem-cjheap 65012 --gc -> 65012 indicates the process ID of the target application. 404 ``` 405<!--DelEnd--> 406You can run the hdc [file transfer](hdc.md#transferring-files) command to obtain the generated file from the device. 407 408 409## Querying CPU Usage 410 411You can use the hidumper to query the CPU information, which includes the system CPU load. 412 413 414### Querying Device CPU Usage 415 416Run the **hidumper --cpuusage** command to obtain the device CPU usage. 417 418The output is as follows: 419 420```shell 421$ hidumper --cpuusage 422 423-------------------------------[cpuusage]------------------------------- 424 425Load average: 12.1 / 12.2 / 12.1; the cpu load average in 1 min, 5 min and 15 min 426CPU usage from 2024-11-06 11:59:33 to 2024-11-06 11:59:38 427Total: 6.38%; User Space: 2.57%; Kernel Space: 3.81%; iowait: 0.02%; irq: 0.14%; idle: 93.46% 428Details of Processes: 429 PID Total Usage User Space Kernel Space Page Fault Minor Page Fault Major Name 430 105 109.01% 0.00% 109.01% 164 0 tppmgr.elf 431 2 0.89% 0.00% 0.89% 0 0 sysmgr-main 432... 433``` 434 435 436### Querying Process CPU Usage 437 438Run the **hidumper --cpuusage pid** command to obtain the CPU usage of a specified process. 439 440The output is as follows: 441 442```shell 443$ hidumper --cpuusage 1 444 445-------------------------------[cpuusage]------------------------------- 446 447Load average: 12.1 / 12.2 / 12.1; the cpu load average in 1 min, 5 min and 15 min 448CPU usage from 2024-11-06 11:59:33 to 2024-11-06 11:59:35 449Total: 3.80%; User Space: 1.45%; Kernel Space: 2.35%; iowait: 0.00%; irq: 0.14%; idle: 96.06% 450Details of Processes: 451 PID Total Usage User Space Kernel Space Page Fault Minor Page Fault Major Name 452 1 0.00% 0.00% 0.00% 38368 1394 init 453``` 454 455 456### Querying CPU Frequency 457 458Run the **hidumper --cpufreq** command to obtain the CPU frequency. 459 460The output is as follows: 461 462```shell 463$ hidumper --cpufreq 464 465-------------------------------[cpufreq]------------------------------- 466 467 468cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq 469 4701018000 471 472cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 473 4741530000 475... 476``` 477 478 479## Querying System Services 480 481 482### Querying System Service List 483 484- Run the **hidumper -ls** command to obtain the running system service list. 485 486The output is as follows: 487 488```shell 489$ hidumper -ls 490System ability list: 491SystemAbilityManager RenderService AbilityManagerService 492DataObserverMgr AccountMgr AIEngine 493BundleMgr FormMgr ApplicationManagerService 494AccessibilityManagerService UserIdmService UserAuthService 495AuthExecutorMgrService PinAuthService FaceAuthService 496FingerprintAuthService WifiDevice WifiHotspot 497WifiP2p WifiScan 1125 4981126 BluetoothHost NetConnManager 499NetPolicyManager NetStatsManager NetTetheringManager 500... 501``` 502 503 504### Obtaining System Service Details 505 506- Run the **hidumper -s** command to obtain detailed information about all system services. 507 508The output is as follows: 509 510```shell 511$ hidumper -s 512 513-------------------------------[ability]------------------------------- 514 515 516----------------------------------SystemAbilityManager---------------------------------- 517The arguments are illegal and you can enter '-h' for help. 518 519-------------------------------[ability]------------------------------- 520 521 522----------------------------------RenderService---------------------------------- 523------Graphic2D--RenderService ------ 524Usage: 525h |help text for the tool 526... 527``` 528 529 530- Run the **hidumper -s [SA0] [SA1]** command to obtain detailed information about one or more specified system services. You can run the **hidumper -ls** command to query the system capability names **[SA0] [SA1]**. 531 532 533The output is as follows: 534 535 536```shell 537$ hidumper -s WindowManagerService 538 539-------------------------------[ability]------------------------------- 540 541 542----------------------------------WindowManagerService---------------------------------- 543Usage: 544-h |help text for the tool 545-a |dump all window information in the system 546-w {window id} [ArkUI Option] |dump specified window information 547------------------------------------[ArkUI Option]------------------------------------ 548... 549$ hidumper -s WindowManagerService RenderService 550 551-------------------------------[ability]------------------------------- 552 553 554----------------------------------WindowManagerService---------------------------------- 555Usage: 556-h |help text for the tool 557-a |dump all window information in the system 558-w {window id} [ArkUI Option] |dump specified window information 559------------------------------------[ArkUI Option]------------------------------------ 560 561 562-------------------------------[ability]------------------------------- 563 564 565----------------------------------RenderService---------------------------------- 566------Graphic2D--RenderService ------ 567Usage: 568h |help text for the tool 569screen |dump all screen information in the system 570surface |dump all surface information 571composer fps |dump the fps info of composer 572... 573``` 574 575 576### Obtaining Capabilities of a Specified System Service 577 578 579Run the **hidumper -s [SA] -a ["option"]** command to obtain the capabilities provided by a specified system service. 580 581 582The following example obtains the help information about RenderService: 583 584 585```shell 586$ hidumper -s RenderService -a "h" 587 588-------------------------------[ability]------------------------------- 589 590----------------------------------RenderService---------------------------------- 591------ Graphic2D--RenderSerice ------ 592Usage: 593gles |inquire gpu info 594h |help text for the tool 595allInfo |dump all info 596fpsCount |dump the refresh rate counts info 597surfacenode |surfacenode [id] 598trimMem |dump trim Mem info 599surface |dump all surface information 600MultiRSTrees |dump multi RS Trees info 601fpsClear |[surface name]/composer fpsClear, clear the fps info 602dumpMem |dump Cache 603allSurfacesMem |dump surface mem info 604RSTree |dump RS Tree info 605rsLogFlag |set rs log flag 606nodeNotOnTree |dump nodeNotOnTree info 607client |dump client ui node trees 608clearFpsCount |clear the refresh rate counts info 609hitchs |[windowname] hitchs, dump the hitchs info of window 610vktextureLimit |dump vk texture limit info 611EventParamList |dump EventParamList info 612dumpNode |dump render node info 613dumpExistPidMem |dumpExistPidMem [pid], dump exist pid mem info 614fps |[windowname] fps, dump the fps info of window 615flushJankStatsRs |flush rs jank stats hisysevent 616screen |dump all screen information in the system 617``` 618 619 620Run the following command to obtain the capability of obtaining GPU information: 621 622```shell 623$ hidumper -s RenderService -a "gles" 624 625-------------------------------[ability]------------------------------- 626 627 628----------------------------------RenderService---------------------------------- 629 630-- DumpGpuInfo: 631GL_VENDOR: HUAWEI 632GL_RENDERER: Maleoon 910 633GL_VERSION: OpenGL ES 3.2 B283 634GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.20 635``` 636 637 638## Querying Process Information 639 640Run the **hidumper -p [pid]** command to obtain information about a specified process, including the mount, thread, thread runtime, and wait channel information. 641 642 643> **NOTE** 644> 645> The **hidumper -p [pid]** command should be used for applications signed by the debug certificate. 646> 647> For details about how to check whether the application specified by the command is debuggable, see the description of the **hidumper --mem-smaps [pid] [-v]** command. 648 649 650The output is as follows: 651 652 653```shell 654$ hidumper -p 64949 655 656-------------------------------[processes]------------------------------- 657 658 659cmd is: ps -efT -p 64949 660 661UID PID TID PPID TCNT STIME TTY TIME CMD 66220020169 64949 64949 629 17 11:40:14 ? 00:00:00 com.example.jsleakwatcher 66320020169 64949 733 629 17 11:40:28 ? 00:00:00 com.example.jsleakwatcher 664... 665$ hidumper -p 666 667-------------------------------[processes]------------------------------- 668 669 670cmd is: ps -efT 671 672UID PID TID PPID TCNT STIME TTY TIME CMD 673root 1 1 0 1 10:46:59 ? 00:00:08 init --second-stage 2389791 674root 2 2 0 127 10:46:59 ? 00:00:24 [sysmgr-main] 675root 2 4 0 127 10:46:59 ? 00:00:00 [call_ebr] 676... 677``` 678 679 680## Querying Network Information 681 682Run the **hidumper --net** command to obtain the network traffic information, network interface statistics, network port statistics, IP information, iptable information, and binder information. This capability is implemented by running system commands such as **netstat**, **ifconfig**, and **iptables**. 683 684The output is as follows: 685 686```shell 687$ hidumper --net 688 689-------------------------------[net traffic]------------------------------- 690 691Received Bytes:0 692Sent Bytes:51885 693 694-------------------------------[net]------------------------------- 695 696cmd is: netstat -nW -> Run the netstat -nW command to query network information, such as the network connection, route table, and interface statistics. 697... 698``` 699 700 701Run the **hidumper --net [pid]** command to obtain the network traffic information of a specified process. 702 703 704The output is as follows: 705 706 707```shell 708$ hidumper --net 1 709 710-------------------------------[net traffic]------------------------------- 711 712Received Bytes:0 713Sent Bytes:51885 714``` 715 716 717## Querying Storage Information 718 719- Run the **hidumper --storage** command to obtain disk statistics, disk usage, file handle information, I/O traffic statistics, and mount information. 720 721The output is as follows: 722 723```shell 724$ hidumper --storage 725 726-------------------------------[storage]------------------------------- 727 728 729cmd is: storaged -u -p 730... 731``` 732 733 734- Run the **hidumper --storage [pid]** command to obtain the I/O information of a specified process. 735 736 737The output is as follows: 738 739 740```shell 741$ hidumper --storage 1 742 743-------------------------------[storage io]------------------------------- 744 745 746/proc/1/io 747 748rchar: 28848175 749wchar: 4364169 750syscr: 16886 751syscw: 15866 752read_bytes: 30617600 753write_bytes: 10907648 754cancelled_write_bytes: 734003 755``` 756 757 758The fields in the I/O information are described as follows: 759 760 761- **rchar**: total number of characters read by the process from the cache or directly since it starts, in bytes. 762 763- **wchar**: total number of characters written by the process from the cache or directly since it starts, in bytes. 764 765- **syscr**: number of **read** system calls executed by the process since it starts. 766 767- **syscw**: number of **write** system calls executed by the process since it starts. 768 769- **read_bytes**: number of bytes read by the process from the file system and network since it starts, in bytes. 770 771- **write_bytes**: number of bytes written by the process to the file system and network since it starts, in bytes. 772 773- **cancelled_write_bytes**: number of bytes that are not written due to write cancellation since the process starts, in bytes. Generally, the value of this field is 0 unless an error occurs when data is written to the disk or the write operation is interrupted. 774 775 776## Querying System Information 777 778- Run the **hidumper -lc** command to obtain the system information cluster list. 779 780The output is as follows: 781 782```shell 783$ hidumper -lc 784System cluster list: 785base system 786``` 787 788- Run the **hidumper -c [System information cluster name]** command to obtain the information of a specified cluster. 789 790For example, run the **hidumper -c base** command to obtain the device information, kernel version, boot parameters, and boot time. The output is as follows: 791 792```shell 793-------------------------------[base]------------------------------- 794 795BuildId: ALN-AL00 5.0.1.XXX(XXX) -> Device information 796ReleaseType: Beta1 797OsVersion: phone/HUAWEI/HUAWEI/ALN/OpenHarmony-5.0.1.XXX(Beta1)/ALN-AL10/ALN-AL10/XX/5.0.1.XXX/default 798DeviceType: phone 799... 800 801/proc/version 802 803Hongmeng version: HongMeng Kernel X.XX.XX -> Kernel version 804 805/proc/cmdline -> Boot parameters 806 807ohos.boot.post_data_blks=0x0 ohos.boot.ptn_last_blk=0x772AFFF ... 808 809cmd is: uptime -p 810 811up 0 weeks, 0 days, 5 hours, 27 minutes -> Boot time 812``` 813 814For example, run the **hidumper -c system** command to obtain the environment variables, kernel module, loaded kernel modules, slab, zone, vmstat, vmalloc, CPU frequency, and memory information. The output is as follows: 815 816```shell 817$ hidumper -c system 818 819-------------------------------[system]------------------------------- 820 821 822cmd is: printenv -> Environment variables 823 824_=/system/bin/printenv 825LANG=en_US.UTF-8 826HOME=/root 827PULSE_STATE_PATH=/data/data/.pulse_dir/state 828OLDPWD=/ 829PWD=/ 830TMP=/data/local/mtp_tmp/ 831PULSE_RUNTIME_PATH=/data/data/.pulse_dir/runtime 832... 833 834/proc/modules -> Kernel module information 835 836modem_driver 1490944 24 - Live 0x0000000000000000 837hmtpp_freq_dal_kirin 20480 0 [permanent], Live 0x0000000000000000 (O) 838kconsole 20480 0 [permanent], Live 0x0000000000000000 (O) 839hmtpp_dal 40960 2 hmtpp_freq_dal_kirin, Live 0x0000000000000000 (O) 840... 841 842cmd is: lsmod -> Loaded kernel module 843 844Module Size Used by 845modem_driver 1490944 24 846hmtpp_freq_dal_kirin 20480 0 [permanent] 847kconsole 20480 0 [permanent] 848hmtpp_dal 40960 2 hmtpp_freq_dal_kirin 849... 850 851/proc/slabinfo -> slab information 852 853slabinfo - version: 2.0 854#name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <num_pool> <sharedavail> <reclaimable> 855slab-[16] 48459 54432 16 252 1 : tunables 0 0 0 : slabdata 215 216 4 0 0 856slab-[24] 78315 83328 24 168 1 : tunables 0 0 0 : slabdata 496 496 4 0 0 857slab-[32] 5834 9954 32 126 1 : tunables 0 0 0 : slabdata 79 79 4 0 0 858... 859 860/proc/zoneinfo -> zone information 861 862Node 0, zone DMA 863 per-node stats 864 nr_inactive_anon 419922 865 nr_active_anon 11737 866 nr_inactive_file 381289 867 nr_active_file 456643 868... 869 870/proc/vmstat -> vmstat information 871 872workingset_refault_anon 63071 873workingset_refault_file 0 874workingset_activate_anon 1742 875workingset_activate_file 0 876... 877 878/proc/vmallocinfo -> vmalloc information 879 8800x0000000000000000-0x0000000000000000 4096 of_iomap+0xe4/0xec pages=1 phys=0xfb21b000 ioremap 8810x0000000000000000-0x0000000000000000 4096 of_iomap+0xe4/0xec pages=1 phys=0xffb85000 ioremap 8820x0000000000000000-0x0000000000000000 4152 gen_pool_add_owner+0x48/0xc0 pages=2 vmalloc 8830x0000000000000000-0x0000000000000000 4096 of_iomap+0xe4/0xec pages=1 phys=0xee262000 ioremap 884... 885 886cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq -> CPU frequency information 887 8881430000 889 890cmd is: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 891 8921530000 893 894cmd is: cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq 895 8961430000 897... 898 899-------------------------------[memory]------------------------------- -> Memory information 900Total Memory Usage by PID: 901PID Total Pss(xxx in SwapPss) Total Vss Total Rss Total Uss GL Graph Dma PurgSum PurgPin Name 9021 4001(1672 in SwapPss) kB 59028 kB 5744 kB 1972 kB 0 kB 0 kB 0 kB 0 kB 0 kB init 9032 50451(0 in SwapPss) kB 18014398163279052 kB 52088 kB 49448 kB 0 kB 0 kB 0 kB 0 kB 0 kB sysmgr-main 90479 2741(0 in SwapPss) kB 2145468 kB 6052 kB 1292 kB 0 kB 0 kB 0 kB 0 kB 0 kB crypto.elf 90580 8796(0 in SwapPss) kB 2156116 kB 12584 kB 6940 kB 0 kB 0 kB 0 kB 0 kB 0 kB devmgr.elf 90685 96861(0 in SwapPss) kB 37180468 kB 100932 kB 94808 kB 0 kB 0 kB 0 kB 0 kB 0 kB devhost.elf 907501 2256(0 in SwapPss) kB 2142484 kB 3892 kB 1620 kB 0 kB 0 kB 0 kB 0 kB 0 kB hguard.elf 908586 1656(1412 in SwapPss) kB 32852 kB 744 kB 236 kB 0 kB 0 kB 0 kB 0 kB 0 kB ueventd 909... 910``` 911 912- Run the **hidumper -c** command to obtain all information clusters, including the **base** and **system** clusters. 913 914 915## Obtaining System Fault Logs 916 917Run the **hidumper -e** command to obtain the system fault log and print its file name and details. 918 919```shell 920$ hidumper -e 921 922-------------------------------[faultlog]------------------------------- 923 924 925/data/log/faultlog/faultlogger/syswarning-com.ohos.sceneboard-20020022-20241106104006 -> Fault log file name 926 927Generated by HiviewDFX@OpenHarmony -> Fault log details 928... 929``` 930 931 932## Obtaining IPC Information 933 934Run the **hidumper --ipc -a --start-stat/stop-stat/stat** command to obtain the IPC information within the collection period. 935 936The output is as follows: 937 938```shell 939$ hidumper --ipc -a --start-stat 940StartIpcStatistics pid:1473 success 941StartIpcStatistics pid:775 success 942StartIpcStatistics pid:1472 success 943... 944$ hidumper --ipc -a --stat 945GlobalStatisticsInfo 946CurrentPid:1473 947TotalCount:3 948TotalTimeCost:3783 949--------------------------------ProcessStatisticsInfo------------------------------- 950CallingPid:625 951CallingPidTotalCount:3 952... 953$ hidumper --ipc -a --stop-stat 954StopIpcStatistics pid:1473 success 955StopIpcStatistics pid:775 success 956StopIpcStatistics pid:1472 success 957... 958``` 959 960Run the **hidumper --ipc [pid] --start-stat/stop-stat/stat** command to obtain the IPC information of a specified process within the collection period. 961 962The output is as follows: 963 964```shell 965$ hidumper --ipc 1473 --start-stat 966StartIpcStatistics pid:1473 success 967$ hidumper --ipc 1473 --stat 968GlobalStatisticsInfo 969CurrentPid:1473 970TotalCount:2 971TotalTimeCost:2214 972--------------------------------ProcessStatisticsInfo------------------------------- 973CallingPid:625 974CallingPidTotalCount:2 975CallingPidTotalTimeCost:2214 976~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~InterfaceStatisticsInfo~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 977DescriptorCode:OHOS.ILocalAbilityManager_6 978DescriptorCodeCount:2 979DescriptorCodeTimeCost: 980Total:2214 | Max:1444 | Min:770 | Avg:1107 981~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 982------------------------------------------------------------------------------------ 983 984$ hidumper --ipc 1473 --stop-stat 985StopIpcStatistics pid:1473 success 986``` 987 988 989## Compressing Exported Information 990 991HiDiumper provides the **--zip** command to export any type of exported information into a ZIP file in **/data/log/hidumper**. This command can be combined with other commands, and the file is named with the current timestamp, as shown in the following example. 992 993```shell 994$ hidumper --zip 995100%,[-],The result is:/data/log/hidumper/20250622-120444-166.zip 996``` 997 998For example, if the system fault log obtained by running the **hidumper -e** command is large, you can compress the log as follows: 999 1000```shell 1001$ hidumper -e 1002 1003-------------------------------[faultlog]------------------------------- 1004 1005 1006/data/log/faultlog/faultlogger/syswarning-com.ohos.sceneboard-20020022-20241106104006 -> Fault log file name 1007 1008Generated by HiviewDFX@OpenHarmony 1009... -> Fault log details, which are omitted due to excessive text content. 1010$ hidumper -e --zip 1011100%,[-],The result is:/data/log/hidumper/20250623-092235-087.zip 1012``` 1013 1014## Common ArkUI Basic Information Display Capabilities 1015ArkUI provides the capability of obtaining information such as the component tree based on the enhanced hidumper. 1016### Obtaining Application Window Information 1017Run the following command to print the full window information. You can find the **WinId** of the corresponding window in the full information and pass it as a parameter to other commands to obtain related information. 1018 1019```shell 1020hdc shell hidumper -s WindowManagerService -a '-a' 1021``` 1022 **Example** 1023```text 1024-------------------------------[ability]------------------------------- 1025 1026 1027----------------------------------WindowManagerService--------------------------------- 1028-------------------------------------ScreenGroup 1------------------------------------- 1029WindowName DisplayId Pid WinId Type Mode Flag ZOrd Orientation [ x y w h ] 1030ScreenLockWindow 0 1274 2 2110 1 0 4 0 [ 0 0 720 1280 ] 1031SystemUi_NavigationBar 0 1274 5 2112 102 1 3 0 [ 0 1208 720 72 ] 1032SystemUi_StatusBar 0 1274 4 2108 102 1 2 0 [ 0 0 720 72 ] 1033settings0 0 10733 11 1 1 1 1 0 [ 0 72 720 1136 ] 1034EntryView 0 1546 8 2001 1 0 0 8 [ 0 0 720 1280 ] 1035--------------------------------------------------------------------------------------- 1036SystemUi_VolumePanel 0 1274 3 2111 1 1 -1 0 [ 0 0 0 0 ] 1037SystemUi_DropdownPan 0 1274 6 2109 1 1 -1 0 [ 0 0 0 0 ] 1038SystemUi_BannerNotic 0 1274 7 2111 1 1 -1 0 [ 0 0 0 0 ] 1039RecentView 0 1546 9 2115 1 1 -1 0 [ 0 0 0 0 ] 1040imeWindow 0 1530 10 2105 1 1 -1 0 [ 0 0 0 0 ] 1041Focus window: 2 1042total window num: 10 1043``` 1044 1045The following table lists the mapping between common **windowName** and built-in application windows. 1046|windowName|Built-in Application Window| 1047|---|---| 1048| EntryView|Home screen.| 1049| RecentView|Recent tasks.| 1050| SystemUi_NavigationBar|Three-key navigation.| 1051| SystemUi_StatusBar|Status bar.| 1052| ScreenLockWindow|Lock screen.| 1053 1054### Obtaining an Application Component Tree 1055Run the following command to view information about all components in an application: 1056 1057```shell 1058hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -element'" 1059``` 1060**windowId** is the window ID of the target application. 1061 1062**Example** 1063 1064```text 1065hdc shell "hidumper -s WindowManagerService -a '-w 5 -element'" 1066 1067-------------------------------[ability]------------------------------- 1068----------------------------------WindowManagerService--------------------------------- 1069WindowName: SystemUi_NavigationBar 1070DisplayId: 0 1071WinId: 5 1072Pid: 1274 1073Type: 2112 1074Mode: 102 1075Flag: 1 1076Orientation: 0 1077IsStartingWindow: false 1078FirstFrameCallbackCalled: 0 1079IsVisible: false 1080WindowRect: [ 0, 1208, 720, 72 ] 1081TouchHotAreas: [ 0, 1208, 720, 72 ] 1082 |-> RootElement childSize:1 1083 | ID: 0 1084 | elmtId: -1 1085 | retakeID: 16 1086 | Active: Y 1087 |-> StackElement childSize:2 1088 | ID: 1 1089 | elmtId: -1 1090 | retakeID: 14 1091 | Active: Y 1092 |-> StageElement childSize:1 1093 | ID: 2 1094 | elmtId: -1 1095 | retakeID: 13 1096 | Active: Y 1097 |-> PageElement childSize:1 1098 | ID: 3 1099 | elmtId: -1 1100 | retakeID: 569 1101 | Active: Y 1102...... 1103``` 1104 1105### Obtaining Component Information of a Specified Application Node 1106Run the following command to view component information of a node: 1107 1108```shell 1109hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -element -lastpage %nodeID%'" 1110``` 1111**windowId** indicates the window ID of the application, and **nodeID** indicates the ID of the specified node. You can obtain the **nodeID** by obtaining the target application component tree. 1112 1113**Example** 1114```text 1115hdc shell "hidumper -s WindowManagerService -a '-w 5 -element -lastpage 3'" 1116 1117-------------------------------[ability]------------------------------- 1118----------------------------------WindowManagerService--------------------------------- 1119WindowName: SystemUi_NavigationBar 1120DisplayId: 0 1121WinId: 5 1122Pid: 1274 1123Type: 2112 1124Mode: 102 1125Flag: 1 1126Orientation: 0 1127IsStartingWindow: false 1128FirstFrameCallbackCalled: 0 1129IsVisible: false 1130WindowRect: [ 0, 1208, 720, 72 ] 1131TouchHotAreas: [ 0, 1208, 720, 72 ] 1132 |-> PageElement childSize:1 1133 | ID: 3 1134 | elmtId: -1 1135 | retakeID: 569 1136 | Active: Y 1137...... 1138``` 1139 1140### Obtaining the Inspector Tree of an Application 1141The **element/render** tree in the preceding example mainly contains multiple internal implementations, which cannot be mapped to components in the application code. You can print the Inspector tree to obtain the tree structure and basic information corresponding to the application components. The Inspector tree matches DevEco Testing and ArkUI Inspector in DevEco Studio. 1142 1143You need to enable ArkUI debug before using this functionality. 1144```shell 1145hdc shell param set persist.ace.testmode.enabled 1 1146``` 1147**set**: command for setting; **persist.ace.testmode.enabled**: ArkUI debug switch name; **1**: the switch is set to **true** to enable the debug functionality. 1148 1149The command is as follows: 1150```shell 1151hdc shell "hidumper -s WindowManagerService -a '-w %windowId% -inspector'" 1152``` 1153**Example** 1154 1155```text 1156hdc shell "hidumper -s WindowManagerService -a '-w 5 -inspector'" 1157 1158|-> rootstacktag childSize:1 1159| ID: 2100001 1160| compid: 1161| text: 1162| top: 72.000000 1163| left: 0.000000 1164| width: 0.000000 1165| height: 0.000000 1166| visible: 1 1167| clickable: 0 1168| checkable: 0 1169|-> Column childSize:1 1170| ID: 128 1171| compid: 1172| text: 1173| top: 72.000000 1174| left: 0.000000 1175| width: 720.000000 1176| height: 1136.000000 1177| visible: 1 1178| clickable: 0 1179| checkable: 0 1180|-> GridContainer childSize:1 1181| ID: 129 1182| compid: 1183| text: 1184| top: 72.000000 1185| left: 0.000000 1186| width: 720.000000 1187| height: 1136.000000 1188| visible: 1 1189| clickable: 0 1190| checkable: 0 1191|-> Column childSize:2 1192| ID: 130 1193| compid: 1194| text: 1195| top: 72.000000 1196| left: 0.000000 1197| width: 720.000000 1198| height: 180.000000 1199| visible: 1 1200| clickable: 0 1201| checkable: 0 1202 1203...... 1204``` 1205 1206### Obtaining Application Route Stack Information 1207 1208This command outputs the information about the application page route stack, which is sorted based on the stack creation sequence and parent-child relationship. 1209 1210> **NOTE** 1211> 1212> This command can be used only for applications that implement page routing through the [Navigation](../ui/arkts-navigation-navigation.md) component. 1213 1214The command is as follows: 1215 1216```shell 1217hidumper -s WindowManagerService -a '-w %windowId% -navigation -c' 1218``` 1219**Example** 1220```text 1221hidumper -s WindowManagerService -a '-w 15 -navigation -c' 1222 1223-------------------------------[ability]------------------------------- 1224 1225 1226----------------------------------WindowManagerService-------------------------------- 1227WindowName: myapplication0 1228DisplayId: 0 1229WinId: 12 1230Pid: 5908 1231Type: 1 1232Mode: 1 1233Flag: 0 1234Orientation: 0 1235IsStartingWindow: false 1236FirstFrameCallbackCalled: 1 1237VisibilityState: 0 1238Focusable: true 1239DecoStatus: true 1240IsPrivacyMode: false 1241isSnapshotSkip: 0 1242WindowRect: [ 0, 0, 720, 1280 ] 1243TouchHotAreas: [ 0, 0, 720, 1280 ] 1244bundleName:com.example.myapplication 1245moduleName:entry 1246 LastRequestVsyncTime: 2351504075334 1247 transactionFlags: [ 5908, 0 ] 1248 last vsyncId: 527 1249Navigation number: 4 1250|-> Navigation ID: 7, Depth: 7, Mode: "SPLIT", NavDestinations: 1251 | [0]{ ID: 0, Name: "pageOne", Mode: "STANDARD", IsOnShow: "FALSE" } 1252 | [1]{ ID: 1, Name: "pageTwo", Mode: "STANDARD", IsOnShow: "TRUE" } 1253|-> Navigation ID: 19, Depth: 7, Mode: "AUTO (STACK)", NavDestinations: 1254 |-> Navigation ID: 28, Depth: 11, Mode: "STACK", NavDestinations: 1255 | [0]{ ID: 2, Name: "pageOne", Mode: "STANDARD", IsOnShow: "FALSE" } 1256 | [1]{ ID: 3, Name: "pageTwo", Mode: "DIALOG", IsOnShow: "FALSE" } 1257 |-> Navigation ID: 123, Depth: 11, Mode: "AUTO (SPLIT)", NavDestinations: 1258 | [0]{ ID: 4, Name: "pageFive", Mode: "STANDARD", IsOnShow: "FALSE" } 1259 | [1]{ ID: 5, Name: "pageSix", Mode: "STANDARD", IsOnShow: "FALSE" } 1260 | [2]{ ID: 6, Name: "pageThree", Mode: "STANDARD", IsOnShow: "TRUE" } 1261``` 1262> **NOTE** 1263> 1264> For the same-level nodes, the node displayed at the bottom is the stack top node. 1265 1266## FAQs 1267 1268 1269### What is the difference between the memory usage queried by hidumper and that by the HiDebug APIs? 1270 1271**Symptom** 1272 1273The memory information obtained by the **hidumper --mem** commands is different from that by the [HiDebug](../reference/apis-performance-analysis-kit/js-apis-hidebug.md) APIs. 1274 1275**Possible Causes and Solution** 1276 1277The following table compares the memory information obtained by the **hidumper --mem** commands and that by the HiDebug APIs. 1278 1279**Table 1** 1280 1281| Command/API| Usage Scenario| Data Source| Whether to Export Graphics Memory| 1282| -------- | -------- | -------- | -------- | 1283| hidumper --mem | Obtain the memory usage of all processes.| System node: **/proc/pid/smaps_rollup**| Yes| 1284| hidumper --mem [pid] | Obtain the memory usage of a process.| System node: **/proc/pid/smaps**| Yes| 1285| hidumper --mem-smaps [pid] | Obtain the detailed memory usage of a process.| System node: **/proc/pid/smaps_rollup**| No| 1286| [hidebug.getAppNativeMemInfo](../reference/apis-performance-analysis-kit/js-apis-hidebug.md#hidebuggetappnativememinfo12) | Obtain the memory usage of an application.| System node: **/proc/pid/smaps_rollup**| No| 1287 1288To obtain the graphics memory using HiDebug, see [HiDebug Overview](hidebug-guidelines.md). 1289 1290 1291### What should I do if hidumper fails to obtain the process VM memory and leaked object information? 1292 1293**Symptom** 1294 1295No file is generated when the **hidumper --mem-jsheap [pid] --leakobj** command is executed. 1296 1297**Possible Causes and Solution** 1298 1299The **hidumper --mem-jsheap \[pid] --leakobj** command depends on [JsLeakWatcher](../reference/apis-performance-analysis-kit/js-apis-jsleakwatcher.md). The application must enable leak detection through the **JsLeakWatcher** API. For details, see [Querying VM Heap Memory](#querying-vm-heap-memory). 1300