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


## hidebug.getNativeHeapSize

getNativeHeapSize(): bigint

获取native heap内存的总大小。

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

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

Z
zengyawen 已提交
25 26 27
| 类型   | 说明                        |
| ------ | --------------------------- |
| bigint | 返回native heap内存总大小。 |
J
j30012456 已提交
28 29


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


## hidebug.getNativeHeapAllocatedSize

getNativeHeapAllocatedSize(): bigint

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

Z
zengyawen 已提交
42
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
J
j30012456 已提交
43 44


Z
zengyawen 已提交
45 46 47 48
**返回值:**
| 类型   | 说明                              |
| ------ | --------------------------------- |
| bigint | 返回native heap内存的已分配内存。 |
J
j30012456 已提交
49

Z
zengyawen 已提交
50 51

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


## hidebug.getNativeHeapFreeSize

getNativeHeapFreeSize(): bigint

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

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

J
j30012456 已提交
65

Z
zengyawen 已提交
66 67 68 69
**返回值:**
| 类型   | 说明                            |
| ------ | ------------------------------- |
| bigint | 返回native heap内存的空闲内存。 |
J
j30012456 已提交
70 71


Z
zengyawen 已提交
72
**示例:**
J
j30012456 已提交
73
  ```js
J
j30012456 已提交
74 75 76 77 78 79 80 81 82 83
  let nativeHeapFreeSize = hidebug.getNativeHeapFreeSize();
  ```


## hidebug.getPss

getPss(): bigint

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

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

J
j30012456 已提交
86

Z
zengyawen 已提交
87 88 89 90
**返回值:**
| 类型   | 说明                      |
| ------ | ------------------------- |
| bigint | 返回应用进程PSS内存大小。 |
J
j30012456 已提交
91 92


Z
zengyawen 已提交
93
**示例:**
J
j30012456 已提交
94
  ```js
J
j30012456 已提交
95 96 97 98 99 100 101 102 103 104
  let pss = hidebug.getPss();
  ```


## hidebug.getSharedDirty

getSharedDirty(): bigint

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

Z
zengyawen 已提交
105
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
J
j30012456 已提交
106 107


Z
zengyawen 已提交
108 109 110 111
**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
| bigint | 返回进程的共享脏内存大小。 |
J
j30012456 已提交
112

Z
zengyawen 已提交
113 114

**示例:**
J
j30012456 已提交
115
  ```js
J
j30012456 已提交
116
  let sharedDirty = hidebug.getSharedDirty();
J
j30012456 已提交
117 118
  ```

J
j30012456 已提交
119
## hidebug.getPrivateDirty<sup>9+<sup>
J
j30012456 已提交
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

getPrivateDirty(): bigint

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

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


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


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

J
j30012456 已提交
139
## hidebug.getCpuUsage<sup>9+<sup>
J
j30012456 已提交
140 141 142 143 144 145 146 147 148 149 150

getCpuUsage(): number

获取进程的cpu占用率。

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


**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
J
j30012456 已提交
151
| number | 获取进程的cpu占用率,返回值为小数。 |
J
j30012456 已提交
152 153 154 155 156 157


**示例:**
  ```js
  let cpuUsage = hidebug.getCpuUsage();
  ```
J
j30012456 已提交
158 159 160 161 162 163 164

## hidebug.startProfiling

startProfiling(filename : string) : void

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

Z
zengyawen 已提交
165 166 167
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**
J
j30012456 已提交
168 169 170 171 172

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

Z
zengyawen 已提交
173
**示例:**
J
j30012456 已提交
174

J
j30012456 已提交
175
```js
J
j30012456 已提交
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
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 已提交
191 192 193
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

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

J
j30012456 已提交
195
```js
J
j30012456 已提交
196 197 198 199 200 201 202 203 204 205 206 207 208
hidebug.startProfiling("cpuprofiler-20220216");
// code block
// ...
// code block
hidebug.stopProfiling();
```

## hidebug.dumpHeapData

dumpHeapData(filename : string) : void

虚拟机堆导出。

Z
zengyawen 已提交
209 210 211
**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug

**参数:**
J
j30012456 已提交
212 213 214 215 216

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

Z
zengyawen 已提交
217
**示例:**
J
j30012456 已提交
218

J
j30012456 已提交
219
```js
J
j30012456 已提交
220
hidebug.dumpHeapData("heap-20220216");
J
j30012456 已提交
221 222
```

J
j30012456 已提交
223
## hidebug.getServiceDump<sup>9+<sup>
J
j30012456 已提交
224

J
j30012456 已提交
225
getServiceDump(serviceid : number) : string
J
j30012456 已提交
226 227

获取系统服务信息。
J
j30012456 已提交
228
此接口为系统接口,三方应用使用需要添加dump权限。
J
j30012456 已提交
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247

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

**参数:**

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

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

**示例:**

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