js-apis-hidebug.md 10.1 KB
Newer Older
J
j30012456 已提交
1 2 3 4 5 6 7 8 9
# Debug调试

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

使用hidebug,可以获取应用内存的使用情况,包括应用进程的静态堆内存(native heap)信息、应用进程内存占用PSS(Proportional Set Size)信息等;可以完成虚拟机内存切片导出,虚拟机CPU Profiling采集等操作。

## 导入模块

J
j30012456 已提交
10
```js
J
j30012456 已提交
11 12 13 14 15 16 17 18
import hidebug from '@ohos.hidebug';
```


## hidebug.getNativeHeapSize

getNativeHeapSize(): bigint

J
jiangyuan0000 已提交
19
获取本应用堆内存的总大小。
J
j30012456 已提交
20

J
j30012456 已提交
21
本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。
J
j30012456 已提交
22

Z
zengyawen 已提交
23 24 25
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**返回值:**
J
j30012456 已提交
26

Z
zengyawen 已提交
27 28
| 类型   | 说明                        |
| ------ | --------------------------- |
J
jiangyuan0000 已提交
29
| bigint | 返回本应用堆内存总大小,单位为kB。 |
J
j30012456 已提交
30 31


Z
zengyawen 已提交
32
**示例:**
J
j30012456 已提交
33
  ```js
J
j30012456 已提交
34 35 36 37 38 39 40 41
  let nativeHeapSize = hidebug.getNativeHeapSize();
  ```


## hidebug.getNativeHeapAllocatedSize

getNativeHeapAllocatedSize(): bigint

J
jiangyuan0000 已提交
42
获取本应用堆内存的已分配内存大小。
J
j30012456 已提交
43

J
j30012456 已提交
44
本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。
J
j30012456 已提交
45

Z
zengyawen 已提交
46
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
J
j30012456 已提交
47

Z
zengyawen 已提交
48
**返回值:**
49

Z
zengyawen 已提交
50 51
| 类型   | 说明                              |
| ------ | --------------------------------- |
J
jiangyuan0000 已提交
52
| bigint | 返回本应用堆内存的已分配内存,单位为kB。 |
J
j30012456 已提交
53

Z
zengyawen 已提交
54 55

**示例:**
J
j30012456 已提交
56
  ```js
J
j30012456 已提交
57 58 59 60 61 62 63 64
  let nativeHeapAllocatedSize = hidebug.getNativeHeapAllocatedSize();
  ```


## hidebug.getNativeHeapFreeSize

getNativeHeapFreeSize(): bigint

J
jiangyuan0000 已提交
65
获取本应用堆内存的空闲内存大小。
J
j30012456 已提交
66

J
j30012456 已提交
67
本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。
J
j30012456 已提交
68

Z
zengyawen 已提交
69 70 71
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**返回值:**
72

Z
zengyawen 已提交
73 74
| 类型   | 说明                            |
| ------ | ------------------------------- |
J
jiangyuan0000 已提交
75
| bigint | 返回本应用堆内存的空闲内存,单位为kB。 |
J
j30012456 已提交
76

Z
zengyawen 已提交
77
**示例:**
J
j30012456 已提交
78
  ```js
J
j30012456 已提交
79 80 81 82 83 84 85 86
  let nativeHeapFreeSize = hidebug.getNativeHeapFreeSize();
  ```


## hidebug.getPss

getPss(): bigint

J
jiangyuan0000 已提交
87
获取应用进程实际使用的物理内存大小。
J
j30012456 已提交
88

Z
zengyawen 已提交
89 90 91
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**返回值:**
92

Z
zengyawen 已提交
93 94
| 类型   | 说明                      |
| ------ | ------------------------- |
J
jiangyuan0000 已提交
95
| bigint | 返回应用进程实际使用的物理内存大小,单位为kB。 |
J
j30012456 已提交
96

Z
zengyawen 已提交
97
**示例:**
J
j30012456 已提交
98
  ```js
J
j30012456 已提交
99 100 101 102 103 104 105 106 107 108
  let pss = hidebug.getPss();
  ```


## hidebug.getSharedDirty

getSharedDirty(): bigint

获取进程的共享脏内存大小。

Z
zengyawen 已提交
109
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
J
j30012456 已提交
110

Z
zengyawen 已提交
111
**返回值:**
112

Z
zengyawen 已提交
113 114
| 类型   | 说明                       |
| ------ | -------------------------- |
J
jiangyuan0000 已提交
115
| bigint | 返回进程的共享脏内存大小,单位为kB。 |
J
j30012456 已提交
116

Z
zengyawen 已提交
117 118

**示例:**
J
j30012456 已提交
119
  ```js
J
j30012456 已提交
120
  let sharedDirty = hidebug.getSharedDirty();
J
j30012456 已提交
121 122
  ```

J
j30012456 已提交
123
## hidebug.getPrivateDirty<sup>9+<sup>
J
j30012456 已提交
124 125 126 127 128 129 130 131

getPrivateDirty(): bigint

获取进程的私有脏内存大小。

**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**返回值:**
132

J
j30012456 已提交
133 134
| 类型   | 说明                       |
| ------ | -------------------------- |
J
jiangyuan0000 已提交
135
| bigint | 返回进程的私有脏内存大小,单位为kB。 |
J
j30012456 已提交
136 137 138 139 140 141 142


**示例:**
  ```js
  let privateDirty = hidebug.getPrivateDirty();
  ```

J
j30012456 已提交
143
## hidebug.getCpuUsage<sup>9+<sup>
J
j30012456 已提交
144 145 146

getCpuUsage(): number

Z
zengyawen 已提交
147
获取进程的CPU使用率。
J
j30012456 已提交
148

J
j30012456 已提交
149 150
如占用率为50%,则返回0.5。

J
j30012456 已提交
151 152 153
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**返回值:**
154

J
j30012456 已提交
155 156
| 类型   | 说明                       |
| ------ | -------------------------- |
Z
zengyawen 已提交
157
| number | 获取进程的CPU使用率。 |
J
j30012456 已提交
158 159 160 161 162 163


**示例:**
  ```js
  let cpuUsage = hidebug.getCpuUsage();
  ```
J
j30012456 已提交
164

J
jiangyuan0000 已提交
165
## hidebug.startProfiling<sup>(deprecated)</sup>
J
j30012456 已提交
166 167 168

startProfiling(filename : string) : void

J
jiangyuan0000 已提交
169 170
> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.startJsCpuProfiling](#hidebugstartjscpuprofiling9)替代。

J
jiangyuan0000 已提交
171
启动虚拟机Profiling方法跟踪,`startProfiling()`方法的调用需要与`stopProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop``start->stop->stop``start->start->stop->stop`等类似的顺序调用。
J
j30012456 已提交
172

Z
zengyawen 已提交
173 174 175
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**
J
j30012456 已提交
176 177 178 179 180

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |

Z
zengyawen 已提交
181
**示例:**
J
j30012456 已提交
182

J
j30012456 已提交
183
```js
J
j30012456 已提交
184 185 186 187 188 189 190 191 192
hidebug.startProfiling("cpuprofiler-20220216");
// code block
// ...
// code block
hidebug.stopProfiling();
```



J
jiangyuan0000 已提交
193
## hidebug.stopProfiling<sup>(deprecated)</sup>
J
j30012456 已提交
194 195 196

stopProfiling() : void

J
jiangyuan0000 已提交
197 198
> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.stopJsCpuProfiling](#hidebugstopjscpuprofiling9)替代。

J
jiangyuan0000 已提交
199
停止虚拟机Profiling方法跟踪,`stopProfiling()`方法的调用需要与`startProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop``start->stop->stop``start->start->stop->stop`等类似的顺序调用。
J
j30012456 已提交
200

Z
zengyawen 已提交
201 202 203
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**示例:**
J
j30012456 已提交
204

J
j30012456 已提交
205
```js
J
j30012456 已提交
206 207 208 209 210 211 212
hidebug.startProfiling("cpuprofiler-20220216");
// code block
// ...
// code block
hidebug.stopProfiling();
```

J
jiangyuan0000 已提交
213
## hidebug.dumpHeapData<sup>(deprecated)</sup>
J
j30012456 已提交
214 215 216

dumpHeapData(filename : string) : void

J
jiangyuan0000 已提交
217 218
> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.dumpJsHeapData](#hidebugdumpjsheapdata9)替代。

J
j30012456 已提交
219 220
虚拟机堆导出。

Z
zengyawen 已提交
221 222 223
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**
J
j30012456 已提交
224 225 226 227 228

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| filename | string | 是   | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 |

Z
zengyawen 已提交
229
**示例:**
J
j30012456 已提交
230

J
j30012456 已提交
231
```js
J
j30012456 已提交
232
hidebug.dumpHeapData("heap-20220216");
J
j30012456 已提交
233 234
```

J
j30012456 已提交
235
## hidebug.getServiceDump<sup>9+<sup>
J
j30012456 已提交
236

Z
zengyawen 已提交
237
getServiceDump(serviceid : number, fd : number, args : Array\<string>) : void
J
j30012456 已提交
238 239

获取系统服务信息。
J
j30012456 已提交
240

J
jiangyuan0000 已提交
241
**需要权限**: ohos.permission.DUMP
J
j30012456 已提交
242 243 244 245 246 247 248 249

**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| serviceid | number | 是   | 基于该用户输入的service id获取系统服务信息。|
J
jiangyuan0000 已提交
250
| fd | number | 是   | 文件描述符,该接口会往该fd中写入数据。|
Z
zengyawen 已提交
251
| args | Array\<string> | 是   | 系统服务的Dump接口所对应的参数列表。|
J
j30012456 已提交
252

253

J
jiangyuan0000 已提交
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
**示例:**

```js
import fileio from '@ohos.fileio'
import hidebug from '@ohos.hidebug'
import featureAbility from '@ohos.ability.featureAbility'

let context = featureAbility.getContext();
context.getFilesDir().then((data) => {
  var path = data + "/serviceInfo.txt"
  console.info("output path: " + path)
  let fd = fileio.openSync(path, 0o102, 0o666)
  var serviceId = 10
  var args = new Array("allInfo")
  try {
    hidebug.getServiceDump(serviceId, fd, args)
  } catch (error) {
    console.info(error.code)
    console.info(error.message)
  }
  fileio.closeSync(fd);
})
```

## hidebug.startJsCpuProfiling<sup>9+</sup>

startJsCpuProfiling(filename : string) : void

启动虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop``start->stop->stop``start->start->stop->stop`等类似的顺序调用。

**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |

**示例:**

```js
import hidebug from '@ohos.hidebug'

try {
  hidebug.startJsCpuProfiling("cpu_profiling");
  ...
  hidebug.stopJsCpuProfiling();
} catch (error) {
  console.info(error.code)
  console.info(error.message)
}
```

## hidebug.stopJsCpuProfiling<sup>9+</sup>

stopJsCpuProfiling() : void

停止虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop``start->stop->stop``start->start->stop->stop`等类似的顺序调用。

**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |

**示例:**

```js
import hidebug from '@ohos.hidebug'

try {
  hidebug.startJsCpuProfiling("cpu_profiling");
  ...
  hidebug.stopJsCpuProfiling();
} catch (error) {
  console.info(error.code)
  console.info(error.message)
}
```

## hidebug.dumpJsHeapData<sup>9+</sup>

dumpJsHeapData(filename : string) : void

虚拟机堆导出。

**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| filename | string | 是   | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 |
J
j30012456 已提交
349 350 351 352

**示例:**

```js
J
jiangyuan0000 已提交
353 354 355 356 357 358 359 360
import hidebug from '@ohos.hidebug'

try {
  hidebug.dumpJsHeapData("heapData");
} catch (error) {
  console.info(error.code)
  console.info(error.message)
}
Z
zengyawen 已提交
361
```