js-apis-hidebug.md 6.4 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 19 20
import hidebug from '@ohos.hidebug';
```


## hidebug.getNativeHeapSize

getNativeHeapSize(): bigint

获取native heap内存的总大小。

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 29
| 类型   | 说明                        |
| ------ | --------------------------- |
| bigint | 返回native heap内存总大小。 |
J
j30012456 已提交
30 31


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


## hidebug.getNativeHeapAllocatedSize

getNativeHeapAllocatedSize(): bigint

获取native heap内存的已分配内存大小。

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

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


Z
zengyawen 已提交
49 50 51 52
**返回值:**
| 类型   | 说明                              |
| ------ | --------------------------------- |
| bigint | 返回native heap内存的已分配内存。 |
J
j30012456 已提交
53

Z
zengyawen 已提交
54 55

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


## hidebug.getNativeHeapFreeSize

getNativeHeapFreeSize(): bigint

获取native heap内存的空闲内存大小。

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

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

J
j30012456 已提交
71

Z
zengyawen 已提交
72 73 74 75
**返回值:**
| 类型   | 说明                            |
| ------ | ------------------------------- |
| bigint | 返回native heap内存的空闲内存。 |
J
j30012456 已提交
76 77


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


## hidebug.getPss

getPss(): bigint

获取应用进程PSS内存大小。

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

J
j30012456 已提交
92

Z
zengyawen 已提交
93 94 95 96
**返回值:**
| 类型   | 说明                      |
| ------ | ------------------------- |
| bigint | 返回应用进程PSS内存大小。 |
J
j30012456 已提交
97 98


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


## hidebug.getSharedDirty

getSharedDirty(): bigint

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

Z
zengyawen 已提交
111
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
J
j30012456 已提交
112 113


Z
zengyawen 已提交
114 115 116 117
**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
| bigint | 返回进程的共享脏内存大小。 |
J
j30012456 已提交
118

Z
zengyawen 已提交
119 120

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

J
j30012456 已提交
125
## hidebug.getPrivateDirty<sup>9+<sup>
J
j30012456 已提交
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144

getPrivateDirty(): bigint

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

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


**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
| bigint | 返回进程的私有脏内存大小。 |


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

J
j30012456 已提交
145
## hidebug.getCpuUsage<sup>9+<sup>
J
j30012456 已提交
146 147 148 149 150

getCpuUsage(): number

获取进程的cpu占用率。

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

J
j30012456 已提交
153 154 155 156 157 158
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug


**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
J
j30012456 已提交
159
| number | 获取进程的cpu占用率。 |
J
j30012456 已提交
160 161 162 163 164 165


**示例:**
  ```js
  let cpuUsage = hidebug.getCpuUsage();
  ```
J
j30012456 已提交
166 167 168 169 170 171 172

## hidebug.startProfiling

startProfiling(filename : string) : void

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

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 193 194 195 196 197 198
hidebug.startProfiling("cpuprofiler-20220216");
// code block
// ...
// code block
hidebug.stopProfiling();
```



## hidebug.stopProfiling

stopProfiling() : void

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

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

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

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

## hidebug.dumpHeapData

dumpHeapData(filename : string) : void

虚拟机堆导出。

Z
zengyawen 已提交
217 218 219
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**
J
j30012456 已提交
220 221 222 223 224

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

Z
zengyawen 已提交
225
**示例:**
J
j30012456 已提交
226

J
j30012456 已提交
227
```js
J
j30012456 已提交
228
hidebug.dumpHeapData("heap-20220216");
J
j30012456 已提交
229 230
```

J
j30012456 已提交
231
## hidebug.getServiceDump<sup>9+<sup>
J
j30012456 已提交
232

J
j30012456 已提交
233
getServiceDump(serviceid : number) : string
J
j30012456 已提交
234 235

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

此接口为系统接口,三方应用不可用。
J
j30012456 已提交
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256

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

**参数:**

| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| serviceid | number | 是   | 基于该用户输入的service id获取系统服务信息。|

**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
| string | 返回dump的service信息文件的绝对路径。 |

**示例:**

```js
let serviceId = 10;
let pathName = hidebug.getServiceDump(serviceId);
Z
zengyawen 已提交
257
```