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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
## hidebug.getPrivateDirty

getPrivateDirty(): bigint

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

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


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


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

## hidebug.getCpuUsage

getCpuUsage(): number

获取进程的cpu占用率。

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


**返回值:**
| 类型   | 说明                       |
| ------ | -------------------------- |
| number | 获取进程的cpu占用率。 |


**示例:**
  ```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 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
```

## hidebug.getServiceDump

getServiceDump(serviceid : number) : string;

获取系统服务信息。
不适用于第三方应用,需要系统应用配置或拥有dump权限。

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

**参数:**

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

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

**示例:**

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