1# 使用HiDebug获取调试信息(ArkTS) 2 3HiDebug对外提供系统调试相关功能的接口,包括应用进程的静态堆内存(native heap)信息、应用进程内存占用PSS(Proportional Set Size)信息的获取等,也可完成虚拟机内存切片导出,虚拟机CPU Profiling采集等操作。 4 5## 接口说明 6 7| 接口名 | 描述 | 8| ---------------------------------- | ------------------------------------------------------------ | 9| hidebug.getNativeHeapSize | 获取内存分配器统计的进程持有的堆内存大小(含分配器元数据)。 | 10| hidebug.getNativeHeapAllocatedSize | 获取内存分配器统计的进程业务分配的堆内存大小。 | 11| hidebug.getNativeHeapFreeSize | 获取内存分配器持有的缓存内存大小。 | 12| hidebug.getPss | 获取应用进程实际使用的物理内存大小。 | 13| hidebug.getVss | 获取应用进程虚拟耗用内存大小。 | 14| hidebug.getSharedDirty | 获取进程的共享脏内存大小。 | 15| hidebug.getPrivateDirty | 获取进程的私有脏内存大小。 | 16| hidebug.getCpuUsage | 获取进程的CPU使用率。 | 17| hidebug.getServiceDump | 获取系统服务信息。 | 18| hidebug.dumpJsHeapData | 虚拟机堆导出。 | 19| hidebug.startJsCpuProfiling | 启动虚拟机Profiling方法跟踪。 | 20| hidebug.stopJsCpuProfiling | 停止虚拟机Profiling方法跟踪。 | 21| hidebug.getAppVMMemoryInfo | 获取VM内存相关信息。 | 22| hidebug.getAppThreadCpuUsage | 获取应用线程CPU使用情况。 | 23| hidebug.startAppTraceCapture | 启动应用trace采集。 | 24| hidebug.stopAppTraceCapture | 停止应用trace采集。 | 25| hidebug.getAppMemoryLimit | 获取应用程序进程内存限制。 | 26| hidebug.getSystemCpuUsage | 获取系统的CPU资源占用情况。 | 27| hidebug.setAppResourceLimit | 设置应用的fd数量、线程数量、js内存或者native内存资源限制。 | 28| hidebug.getAppNativeMemInfo | 获取应用进程内存信息。 | 29| hidebug.getSystemMemInfo | 获取系统内存信息。 | 30| hidebug.getVMRuntimeStats | 获取系统gc全部统计信息。 | 31| hidebug.getVMRuntimeStat | 根据参数获取指定的系统gc统计信息。 | 32| hidebug.isDebugState | 获取应用进程被调试状态。 | 33| hidebug.getGraphicsMemory | 使用异步方式获取应用显存大小。 | 34| hidebug.getGraphicsMemorySync | 使用同步方式获取应用显存大小。 | 35 36HiDebug的具体用法可查看API参考[API参考文档](../reference/apis-performance-analysis-kit/js-apis-hidebug.md)。 37 38## 开发示例 39 40下文将展示如何在应用内增加一个按钮,并单击该按钮以调用hidebug接口。 41 421. 新建一个工程,选择“Empty Ability”。 43 442. 工程配置界面中,**Model**选择“Stage”。 45 463. 在**Project**窗口单击entry > src > main > ets > pages,打开工程中的Index.ets文件。 47 48 新增一个方法调用hidebug接口,本文以hidebug.getSystemCpuUsage()为例,其他接口可参考[API参考文档](../reference/apis-performance-analysis-kit/js-apis-hidebug.md)。 49 50 ```ts 51 import { hidebug } from '@kit.PerformanceAnalysisKit'; 52 import { BusinessError } from '@kit.BasicServicesKit'; 53 function testHidebug(event?: ClickEvent) { 54 try { 55 console.info(`getSystemCpuUsage: ${hidebug.getSystemCpuUsage()}`) 56 } catch (error) { 57 console.error(`error code: ${(error as BusinessError).code}, error msg: ${(error as BusinessError).message}`); 58 } 59 } 60 ``` 61 62 给文本Text组件添加一个点击事件,示例代码如下: 63 64 ```ts 65 @Entry 66 @Component 67 struct Index { 68 @State message: string = 'Hello World' 69 70 build() { 71 Row() { 72 Column() { 73 Text(this.message) 74 .fontSize(50) 75 .fontWeight(FontWeight.Bold) 76 .onClick(testHidebug);//添加点击事件 77 } 78 .width('100%') 79 } 80 .height('100%') 81 } 82 } 83 ``` 84 854. 在真机上运行该工程,单击应用/服务界面上的“Hello World”文本。 86 875. 在DevEco Studio的底部,切换到“Log”窗口,设置日志的过滤条件为“testTag”。 88 89 此时窗口将显示通过hidebug.getSystemCpuUsage()接口获取的CPU使用率的相关日志。 90 ```Text 91 08-20 11:06:01.891 1948-1948 A03d00/JSAPP com.examp...lication I getSystemCpuUsage: 0.4722222222222222 92 ``` 93 94<!--RP1--> 95<!--RP1End-->