js-apis-hidebug.md 6.5 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 165 166 167 168

## hidebug.startProfiling

startProfiling(filename : string) : void

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

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

**参数:**
J
j30012456 已提交
174 175 176 177 178

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

Z
zengyawen 已提交
179
**示例:**
J
j30012456 已提交
180

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



## hidebug.stopProfiling

stopProfiling() : void

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

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

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

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

## hidebug.dumpHeapData

dumpHeapData(filename : string) : void

虚拟机堆导出。

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

**参数:**
J
j30012456 已提交
218 219 220 221 222

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

Z
zengyawen 已提交
223
**示例:**
J
j30012456 已提交
224

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

J
j30012456 已提交
229
## hidebug.getServiceDump<sup>9+<sup>
J
j30012456 已提交
230

J
j30012456 已提交
231
getServiceDump(serviceid : number) : string
J
j30012456 已提交
232 233

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

此接口为系统接口,三方应用不可用。
J
j30012456 已提交
236 237 238 239 240 241 242 243 244 245

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

**参数:**

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

**返回值:**
246

J
j30012456 已提交
247 248 249 250 251 252 253 254 255
| 类型   | 说明                       |
| ------ | -------------------------- |
| string | 返回dump的service信息文件的绝对路径。 |

**示例:**

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