• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.hidebug (Debug调试)
2
3> **说明:**
4>
5> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
6
7使用hidebug,可以获取应用内存的使用情况,包括应用进程的静态堆内存(native heap)信息、应用进程内存占用PSS(Proportional Set Size)信息等;可以完成虚拟机内存切片导出,虚拟机CPU Profiling采集等操作。
8
9## 导入模块
10
11```js
12import hidebug from '@ohos.hidebug';
13```
14
15
16## hidebug.getNativeHeapSize
17
18getNativeHeapSize(): bigint
19
20获取本应用堆内存的总大小。
21
22**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
23
24**返回值:**
25
26| 类型   | 说明                        |
27| ------ | --------------------------- |
28| bigint | 返回本应用堆内存总大小,单位为kB。 |
29
30
31**示例:**
32  ```js
33  let nativeHeapSize = hidebug.getNativeHeapSize();
34  ```
35
36
37## hidebug.getNativeHeapAllocatedSize
38
39getNativeHeapAllocatedSize(): bigint
40
41获取本应用堆内存的已分配内存大小。
42
43**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
44
45**返回值:**
46
47| 类型   | 说明                              |
48| ------ | --------------------------------- |
49| bigint | 返回本应用堆内存的已分配内存,单位为kB。 |
50
51
52**示例:**
53  ```js
54  let nativeHeapAllocatedSize = hidebug.getNativeHeapAllocatedSize();
55  ```
56
57
58## hidebug.getNativeHeapFreeSize
59
60getNativeHeapFreeSize(): bigint
61
62获取本应用堆内存的空闲内存大小。
63
64**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
65
66**返回值:**
67
68| 类型   | 说明                            |
69| ------ | ------------------------------- |
70| bigint | 返回本应用堆内存的空闲内存,单位为kB。 |
71
72**示例:**
73  ```js
74  let nativeHeapFreeSize = hidebug.getNativeHeapFreeSize();
75  ```
76
77
78## hidebug.getPss
79
80getPss(): bigint
81
82获取应用进程实际使用的物理内存大小。
83
84**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
85
86**返回值:**
87
88| 类型   | 说明                      |
89| ------ | ------------------------- |
90| bigint | 返回应用进程实际使用的物理内存大小,单位为kB。 |
91
92**示例:**
93  ```js
94  let pss = hidebug.getPss();
95  ```
96
97
98## hidebug.getSharedDirty
99
100getSharedDirty(): bigint
101
102获取进程的共享脏内存大小。
103
104**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
105
106**返回值:**
107
108| 类型   | 说明                       |
109| ------ | -------------------------- |
110| bigint | 返回进程的共享脏内存大小,单位为kB。 |
111
112
113**示例:**
114  ```js
115  let sharedDirty = hidebug.getSharedDirty();
116  ```
117
118## hidebug.getPrivateDirty<sup>9+<sup>
119
120getPrivateDirty(): bigint
121
122获取进程的私有脏内存大小。
123
124**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
125
126**返回值:**
127
128| 类型   | 说明                       |
129| ------ | -------------------------- |
130| bigint | 返回进程的私有脏内存大小,单位为kB。 |
131
132
133**示例:**
134  ```js
135  let privateDirty = hidebug.getPrivateDirty();
136  ```
137
138## hidebug.getCpuUsage<sup>9+<sup>
139
140getCpuUsage(): number
141
142获取进程的CPU使用率。
143
144如占用率为50%,则返回0.5。
145
146**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
147
148**返回值:**
149
150| 类型   | 说明                       |
151| ------ | -------------------------- |
152| number | 获取进程的CPU使用率。 |
153
154
155**示例:**
156  ```js
157  let cpuUsage = hidebug.getCpuUsage();
158  ```
159
160## hidebug.getServiceDump<sup>9+<sup>
161
162getServiceDump(serviceid : number, fd : number, args : Array\<string>) : void
163
164获取系统服务信息。
165
166**需要权限**: ohos.permission.DUMP
167
168**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
169
170**参数:**
171
172| 参数名   | 类型   | 必填 | 说明                                                         |
173| -------- | ------ | ---- | ------------------------------------------------------------ |
174| serviceid | number | 是   | 基于该用户输入的service id获取系统服务信息。|
175| fd | number | 是   | 文件描述符,该接口会往该fd中写入数据。|
176| args | Array\<string> | 是   | 系统服务的Dump接口所对应的参数列表。|
177
178**示例:**
179
180```js
181import fs from '@ohos.file.fs'
182import hidebug from '@ohos.hidebug'
183import featureAbility from '@ohos.ability.featureAbility'
184
185let context = featureAbility.getContext();
186context.getFilesDir().then((data) => {
187  var path = data + "/serviceInfo.txt"
188  console.info("output path: " + path)
189  let fd = fs.openSync(path, 0o102, 0o666)
190  var serviceId = 10
191  var args = new Array("allInfo")
192  try {
193    hidebug.getServiceDump(serviceId, fd, args)
194  } catch (error) {
195    console.info(error.code)
196    console.info(error.message)
197  }
198  fs.closeSync(fd);
199})
200```
201
202## hidebug.startJsCpuProfiling<sup>9+</sup>
203
204startJsCpuProfiling(filename : string) : void
205
206启动虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
207
208**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
209
210**参数:**
211
212| 参数名   | 类型   | 必填 | 说明                                                         |
213| -------- | ------ | ---- | ------------------------------------------------------------ |
214| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |
215
216**示例:**
217
218```js
219import hidebug from '@ohos.hidebug'
220
221try {
222  hidebug.startJsCpuProfiling("cpu_profiling");
223  // ...
224  hidebug.stopJsCpuProfiling();
225} catch (error) {
226  console.info(error.code)
227  console.info(error.message)
228}
229```
230
231## hidebug.stopJsCpuProfiling<sup>9+</sup>
232
233stopJsCpuProfiling() : void
234
235停止虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
236
237**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
238
239**参数:**
240
241| 参数名   | 类型   | 必填 | 说明                                                         |
242| -------- | ------ | ---- | ------------------------------------------------------------ |
243| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |
244
245**示例:**
246
247```js
248import hidebug from '@ohos.hidebug'
249
250try {
251  hidebug.startJsCpuProfiling("cpu_profiling");
252  // ...
253  hidebug.stopJsCpuProfiling();
254} catch (error) {
255  console.info(error.code)
256  console.info(error.message)
257}
258```
259
260## hidebug.dumpJsHeapData<sup>9+</sup>
261
262dumpJsHeapData(filename : string) : void
263
264虚拟机堆导出。
265
266**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
267
268**参数:**
269
270| 参数名   | 类型   | 必填 | 说明                                                         |
271| -------- | ------ | ---- | ------------------------------------------------------------ |
272| filename | string | 是   | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 |
273
274**示例:**
275
276```js
277import hidebug from '@ohos.hidebug'
278
279try {
280  hidebug.dumpJsHeapData("heapData");
281} catch (error) {
282  console.info(error.code)
283  console.info(error.message)
284}
285```
286
287## hidebug.startProfiling<sup>(deprecated)</sup>
288
289startProfiling(filename : string) : void
290
291> **说明:**
292>
293> 从 API version 9 开始废弃,建议使用[hidebug.startJsCpuProfiling](#hidebugstartjscpuprofiling9)替代。
294
295启动虚拟机Profiling方法跟踪,`startProfiling()`方法的调用需要与`stopProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
296
297**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
298
299**参数:**
300
301| 参数名   | 类型   | 必填 | 说明                                                         |
302| -------- | ------ | ---- | ------------------------------------------------------------ |
303| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |
304
305**示例:**
306
307```js
308hidebug.startProfiling("cpuprofiler-20220216");
309// code block
310// ...
311// code block
312hidebug.stopProfiling();
313```
314
315
316
317## hidebug.stopProfiling<sup>(deprecated)</sup>
318
319stopProfiling() : void
320
321> **说明:**
322>
323> 从 API version 9 开始废弃,建议使用[hidebug.stopJsCpuProfiling](#hidebugstopjscpuprofiling9)替代。
324
325停止虚拟机Profiling方法跟踪,`stopProfiling()`方法的调用需要与`startProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
326
327**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
328
329**示例:**
330
331```js
332hidebug.startProfiling("cpuprofiler-20220216");
333// code block
334// ...
335// code block
336hidebug.stopProfiling();
337```
338
339## hidebug.dumpHeapData<sup>(deprecated)</sup>
340
341dumpHeapData(filename : string) : void
342
343> **说明:**
344>
345> 从 API version 9 开始废弃,建议使用[hidebug.dumpJsHeapData](#hidebugdumpjsheapdata9)替代。
346
347虚拟机堆导出。
348
349**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
350
351**参数:**
352
353| 参数名   | 类型   | 必填 | 说明                                                         |
354| -------- | ------ | ---- | ------------------------------------------------------------ |
355| filename | string | 是   | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 |
356
357**示例:**
358
359```js
360hidebug.dumpHeapData("heap-20220216");
361```
362