1# @ohos.hidebug (Debug调试) 2 3> **说明:** 4> 5> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 6 7使用hidebug,可以获取应用内存的使用情况,包括应用进程的静态堆内存(native heap)信息、应用进程内存占用PSS(Proportional Set Size)信息等;可以完成虚拟机内存切片导出,虚拟机CPU Profiling采集等操作。 8 9## 导入模块 10 11```js 12import hidebug from '@ohos.hidebug'; 13``` 14 15 16## hidebug.getNativeHeapSize 17 18getNativeHeapSize(): bigint 19 20获取本应用堆内存的总大小。 21 22**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 23 24**返回值:** 25 26| 类型 | 说明 | 27| ------ | --------------------------- | 28| bigint | 返回本应用堆内存总大小,单位为kB。 | 29 30 31**示例:** 32 ```js 33 let nativeHeapSize = hidebug.getNativeHeapSize(); 34 ``` 35 36 37## hidebug.getNativeHeapAllocatedSize 38 39getNativeHeapAllocatedSize(): bigint 40 41获取本应用堆内存的已分配内存大小。 42 43**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 44 45**返回值:** 46 47| 类型 | 说明 | 48| ------ | --------------------------------- | 49| bigint | 返回本应用堆内存的已分配内存,单位为kB。 | 50 51 52**示例:** 53 ```js 54 let nativeHeapAllocatedSize = hidebug.getNativeHeapAllocatedSize(); 55 ``` 56 57 58## hidebug.getNativeHeapFreeSize 59 60getNativeHeapFreeSize(): bigint 61 62获取本应用堆内存的空闲内存大小。 63 64**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 65 66**返回值:** 67 68| 类型 | 说明 | 69| ------ | ------------------------------- | 70| bigint | 返回本应用堆内存的空闲内存,单位为kB。 | 71 72**示例:** 73 ```js 74 let nativeHeapFreeSize = hidebug.getNativeHeapFreeSize(); 75 ``` 76 77 78## hidebug.getPss 79 80getPss(): bigint 81 82获取应用进程实际使用的物理内存大小。 83 84**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 85 86**返回值:** 87 88| 类型 | 说明 | 89| ------ | ------------------------- | 90| bigint | 返回应用进程实际使用的物理内存大小,单位为kB。 | 91 92**示例:** 93 ```js 94 let pss = hidebug.getPss(); 95 ``` 96 97 98## hidebug.getSharedDirty 99 100getSharedDirty(): bigint 101 102获取进程的共享脏内存大小。 103 104**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 105 106**返回值:** 107 108| 类型 | 说明 | 109| ------ | -------------------------- | 110| bigint | 返回进程的共享脏内存大小,单位为kB。 | 111 112 113**示例:** 114 ```js 115 let sharedDirty = hidebug.getSharedDirty(); 116 ``` 117 118## hidebug.getPrivateDirty<sup>9+<sup> 119 120getPrivateDirty(): bigint 121 122获取进程的私有脏内存大小。 123 124**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 125 126**返回值:** 127 128| 类型 | 说明 | 129| ------ | -------------------------- | 130| bigint | 返回进程的私有脏内存大小,单位为kB。 | 131 132 133**示例:** 134 ```js 135 let privateDirty = hidebug.getPrivateDirty(); 136 ``` 137 138## hidebug.getCpuUsage<sup>9+<sup> 139 140getCpuUsage(): number 141 142获取进程的CPU使用率。 143 144如占用率为50%,则返回0.5。 145 146**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 147 148**返回值:** 149 150| 类型 | 说明 | 151| ------ | -------------------------- | 152| number | 获取进程的CPU使用率。 | 153 154 155**示例:** 156 ```js 157 let cpuUsage = hidebug.getCpuUsage(); 158 ``` 159 160## hidebug.getServiceDump<sup>9+<sup> 161 162getServiceDump(serviceid : number, fd : number, args : Array\<string>) : void 163 164获取系统服务信息。 165 166**需要权限**: ohos.permission.DUMP 167 168**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 169 170**参数:** 171 172| 参数名 | 类型 | 必填 | 说明 | 173| -------- | ------ | ---- | ------------------------------------------------------------ | 174| serviceid | number | 是 | 基于该用户输入的service id获取系统服务信息。| 175| fd | number | 是 | 文件描述符,该接口会往该fd中写入数据。| 176| args | Array\<string> | 是 | 系统服务的Dump接口所对应的参数列表。| 177 178**示例:** 179 180```js 181import fs from '@ohos.file.fs' 182import hidebug from '@ohos.hidebug' 183import featureAbility from '@ohos.ability.featureAbility' 184 185let context = featureAbility.getContext(); 186context.getFilesDir().then((data) => { 187 var path = data + "/serviceInfo.txt" 188 console.info("output path: " + path) 189 let fd = fs.openSync(path, 0o102, 0o666) 190 var serviceId = 10 191 var args = new Array("allInfo") 192 try { 193 hidebug.getServiceDump(serviceId, fd, args) 194 } catch (error) { 195 console.info(error.code) 196 console.info(error.message) 197 } 198 fs.closeSync(fd); 199}) 200``` 201 202## hidebug.startJsCpuProfiling<sup>9+</sup> 203 204startJsCpuProfiling(filename : string) : void 205 206启动虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 207 208**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 209 210**参数:** 211 212| 参数名 | 类型 | 必填 | 说明 | 213| -------- | ------ | ---- | ------------------------------------------------------------ | 214| filename | string | 是 | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 | 215 216**示例:** 217 218```js 219import hidebug from '@ohos.hidebug' 220 221try { 222 hidebug.startJsCpuProfiling("cpu_profiling"); 223 // ... 224 hidebug.stopJsCpuProfiling(); 225} catch (error) { 226 console.info(error.code) 227 console.info(error.message) 228} 229``` 230 231## hidebug.stopJsCpuProfiling<sup>9+</sup> 232 233stopJsCpuProfiling() : void 234 235停止虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 236 237**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 238 239**参数:** 240 241| 参数名 | 类型 | 必填 | 说明 | 242| -------- | ------ | ---- | ------------------------------------------------------------ | 243| filename | string | 是 | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 | 244 245**示例:** 246 247```js 248import hidebug from '@ohos.hidebug' 249 250try { 251 hidebug.startJsCpuProfiling("cpu_profiling"); 252 // ... 253 hidebug.stopJsCpuProfiling(); 254} catch (error) { 255 console.info(error.code) 256 console.info(error.message) 257} 258``` 259 260## hidebug.dumpJsHeapData<sup>9+</sup> 261 262dumpJsHeapData(filename : string) : void 263 264虚拟机堆导出。 265 266**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 267 268**参数:** 269 270| 参数名 | 类型 | 必填 | 说明 | 271| -------- | ------ | ---- | ------------------------------------------------------------ | 272| filename | string | 是 | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 | 273 274**示例:** 275 276```js 277import hidebug from '@ohos.hidebug' 278 279try { 280 hidebug.dumpJsHeapData("heapData"); 281} catch (error) { 282 console.info(error.code) 283 console.info(error.message) 284} 285``` 286 287## hidebug.startProfiling<sup>(deprecated)</sup> 288 289startProfiling(filename : string) : void 290 291> **说明:** 292> 293> 从 API version 9 开始废弃,建议使用[hidebug.startJsCpuProfiling](#hidebugstartjscpuprofiling9)替代。 294 295启动虚拟机Profiling方法跟踪,`startProfiling()`方法的调用需要与`stopProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 296 297**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 298 299**参数:** 300 301| 参数名 | 类型 | 必填 | 说明 | 302| -------- | ------ | ---- | ------------------------------------------------------------ | 303| filename | string | 是 | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 | 304 305**示例:** 306 307```js 308hidebug.startProfiling("cpuprofiler-20220216"); 309// code block 310// ... 311// code block 312hidebug.stopProfiling(); 313``` 314 315 316 317## hidebug.stopProfiling<sup>(deprecated)</sup> 318 319stopProfiling() : void 320 321> **说明:** 322> 323> 从 API version 9 开始废弃,建议使用[hidebug.stopJsCpuProfiling](#hidebugstopjscpuprofiling9)替代。 324 325停止虚拟机Profiling方法跟踪,`stopProfiling()`方法的调用需要与`startProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 326 327**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 328 329**示例:** 330 331```js 332hidebug.startProfiling("cpuprofiler-20220216"); 333// code block 334// ... 335// code block 336hidebug.stopProfiling(); 337``` 338 339## hidebug.dumpHeapData<sup>(deprecated)</sup> 340 341dumpHeapData(filename : string) : void 342 343> **说明:** 344> 345> 从 API version 9 开始废弃,建议使用[hidebug.dumpJsHeapData](#hidebugdumpjsheapdata9)替代。 346 347虚拟机堆导出。 348 349**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug 350 351**参数:** 352 353| 参数名 | 类型 | 必填 | 说明 | 354| -------- | ------ | ---- | ------------------------------------------------------------ | 355| filename | string | 是 | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 | 356 357**示例:** 358 359```js 360hidebug.dumpHeapData("heap-20220216"); 361``` 362