• 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```ts
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 | 返回本应用堆内存总大小,单位为Byte。 |
29
30**示例:**
31  ```ts
32  let nativeHeapSize: bigint = hidebug.getNativeHeapSize();
33  ```
34
35## hidebug.getNativeHeapAllocatedSize
36
37getNativeHeapAllocatedSize(): bigint
38
39获取本应用堆内存的已分配内存大小。
40
41**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
42
43**返回值:**
44
45| 类型   | 说明                              |
46| ------ | --------------------------------- |
47| bigint | 返回本应用堆内存的已分配内存,单位为Byte。 |
48
49
50**示例:**
51  ```ts
52  let nativeHeapAllocatedSize: bigint = hidebug.getNativeHeapAllocatedSize();
53  ```
54
55## hidebug.getNativeHeapFreeSize
56
57getNativeHeapFreeSize(): bigint
58
59获取本应用堆内存的空闲内存大小。
60
61**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
62
63**返回值:**
64
65| 类型   | 说明                            |
66| ------ | ------------------------------- |
67| bigint | 返回本应用堆内存的空闲内存,单位为Byte。 |
68
69**示例:**
70  ```ts
71  let nativeHeapFreeSize: bigint = hidebug.getNativeHeapFreeSize();
72  ```
73
74## hidebug.getPss
75
76getPss(): bigint
77
78获取应用进程实际使用的物理内存大小。
79
80**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
81
82**返回值:**
83
84| 类型   | 说明                      |
85| ------ | ------------------------- |
86| bigint | 返回应用进程实际使用的物理内存大小,单位为kB。 |
87
88**示例:**
89  ```ts
90  let pss: bigint = hidebug.getPss();
91  ```
92
93## hidebug.getSharedDirty
94
95getSharedDirty(): bigint
96
97获取进程的共享脏内存大小。
98
99**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
100
101**返回值:**
102
103| 类型   | 说明                       |
104| ------ | -------------------------- |
105| bigint | 返回进程的共享脏内存大小,单位为kB。 |
106
107
108**示例:**
109  ```ts
110  let sharedDirty: bigint = hidebug.getSharedDirty();
111  ```
112
113## hidebug.getPrivateDirty<sup>9+<sup>
114
115getPrivateDirty(): bigint
116
117获取进程的私有脏内存大小。
118
119**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
120
121**返回值:**
122
123| 类型   | 说明                       |
124| ------ | -------------------------- |
125| bigint | 返回进程的私有脏内存大小,单位为kB。 |
126
127**示例:**
128  ```ts
129  let privateDirty: bigint = hidebug.getPrivateDirty();
130  ```
131
132## hidebug.getCpuUsage<sup>9+<sup>
133
134getCpuUsage(): number
135
136获取进程的CPU使用率。
137
138如占用率为50%,则返回0.5。
139
140**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
141
142**返回值:**
143
144| 类型   | 说明                       |
145| ------ | -------------------------- |
146| number | 获取进程的CPU使用率。 |
147
148
149**示例:**
150  ```ts
151  let cpuUsage: number = hidebug.getCpuUsage();
152  ```
153
154## hidebug.getServiceDump<sup>9+<sup>
155
156getServiceDump(serviceid : number, fd : number, args : Array\<string>) : void
157
158获取系统服务信息。
159
160**需要权限**: ohos.permission.DUMP
161
162**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
163
164**参数:**
165
166| 参数名   | 类型   | 必填 | 说明                                                         |
167| -------- | ------ | ---- | ------------------------------------------------------------ |
168| serviceid | number | 是   | 基于该用户输入的service id获取系统服务信息。|
169| fd | number | 是   | 文件描述符,该接口会往该fd中写入数据。|
170| args | Array\<string> | 是   | 系统服务的Dump接口所对应的参数列表。|
171
172**错误码:**
173
174以下错误码的详细介绍请参见[Hidebug错误码](../errorcodes/errorcode-hiviewdfx-hidebug.md)。
175
176| 错误码ID | 错误信息 |
177| ------- | ----------------------------------------------------------------- |
178| 11400101 | the service id is invalid                                           |
179| 401 | the parameter check failed                                            |
180
181**示例:**
182
183```ts
184import UIAbility from '@ohos.app.ability.UIAbility';
185import fs from '@ohos.file.fs';
186import hidebug from '@ohos.hidebug';
187import common from '@ohos.app.ability.common';
188import { BusinessError } from '@ohos.base';
189
190export default class HidebugTest extends UIAbility {
191  public testfunc() {
192    let applicationContext: common.Context | null = null;
193    try {
194      applicationContext = this.context.getApplicationContext();
195    } catch (error) {
196      console.info(`error code: ${(error as BusinessError).code}, error msg: ${(error as BusinessError).message}`);
197    }
198
199    let filesDir: string = applicationContext!.filesDir;
200    let path: string = filesDir + "/serviceInfo.txt";
201    console.info("output path: " + path);
202    let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
203    let serviceId: number = 10;
204    let args: Array<string> = new Array("allInfo");
205
206    try {
207      hidebug.getServiceDump(serviceId, file.fd, args);
208    } catch (error) {
209      console.info(`error code: ${(error as BusinessError).code}, error msg: ${(error as BusinessError).message}`);
210    }
211    fs.closeSync(file);
212  }
213}
214
215let t = new HidebugTest();
216t.testfunc();
217```
218
219## hidebug.startJsCpuProfiling<sup>9+</sup>
220
221startJsCpuProfiling(filename : string) : void
222
223启动虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
224
225**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
226
227**参数:**
228
229| 参数名   | 类型   | 必填 | 说明                                                         |
230| -------- | ------ | ---- | ------------------------------------------------------------ |
231| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |
232
233**错误码:**
234
235以下错误码的详细介绍请参见[通用错误码](../errorcodes/errorcode-universal.md)。
236
237| 错误码ID | 错误信息 |
238| ------- | ----------------------------------------------------------------- |
239| 401 | the parameter check failed                                            |
240
241**示例:**
242
243```ts
244import hidebug from '@ohos.hidebug';
245import { BusinessError } from '@ohos.base';
246
247try {
248  hidebug.startJsCpuProfiling("cpu_profiling");
249  // ...
250  hidebug.stopJsCpuProfiling();
251} catch (error) {
252  console.info(`error code: ${(error as BusinessError).code}, error msg: ${(error as BusinessError).message}`);
253}
254```
255
256## hidebug.stopJsCpuProfiling<sup>9+</sup>
257
258stopJsCpuProfiling() : void
259
260停止虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
261
262**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
263
264**参数:**
265
266| 参数名   | 类型   | 必填 | 说明                                                         |
267| -------- | ------ | ---- | ------------------------------------------------------------ |
268| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |
269
270**示例:**
271
272```ts
273import hidebug from '@ohos.hidebug';
274import { BusinessError } from '@ohos.base';
275
276try {
277  hidebug.startJsCpuProfiling("cpu_profiling");
278  // ...
279  hidebug.stopJsCpuProfiling();
280} catch (error) {
281  console.info(`error code: ${(error as BusinessError).code}, error msg: ${(error as BusinessError).message}`);
282}
283```
284
285## hidebug.dumpJsHeapData<sup>9+</sup>
286
287dumpJsHeapData(filename : string) : void
288
289虚拟机堆导出。
290
291**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
292
293**参数:**
294
295| 参数名   | 类型   | 必填 | 说明                                                         |
296| -------- | ------ | ---- | ------------------------------------------------------------ |
297| filename | string | 是   | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 |
298
299**错误码:**
300
301以下错误码的详细介绍请参见[通用错误码](../errorcodes/errorcode-universal.md)。
302
303| 错误码ID | 错误信息 |
304| ------- | ----------------------------------------------------------------- |
305| 401 | the parameter check failed                                            |
306
307**示例:**
308
309```ts
310import hidebug from '@ohos.hidebug';
311import { BusinessError } from '@ohos.base';
312
313try {
314  hidebug.dumpJsHeapData("heapData");
315} catch (error) {
316  console.info(`error code: ${(error as BusinessError).code}, error msg: ${(error as BusinessError).message}`);
317}
318```
319
320## hidebug.startProfiling<sup>(deprecated)</sup>
321
322startProfiling(filename : string) : void
323
324> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.startJsCpuProfiling](#hidebugstartjscpuprofiling9)替代。
325
326启动虚拟机Profiling方法跟踪,`startProfiling()`方法的调用需要与`stopProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
327
328**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
329
330**参数:**
331
332| 参数名   | 类型   | 必填 | 说明                                                         |
333| -------- | ------ | ---- | ------------------------------------------------------------ |
334| filename | string | 是   | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 |
335
336**示例:**
337
338```ts
339hidebug.startProfiling("cpuprofiler-20220216");
340// code block
341// ...
342// code block
343hidebug.stopProfiling();
344```
345
346## hidebug.stopProfiling<sup>(deprecated)</sup>
347
348stopProfiling() : void
349
350> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.stopJsCpuProfiling](#hidebugstopjscpuprofiling9)替代。
351
352停止虚拟机Profiling方法跟踪,`stopProfiling()`方法的调用需要与`startProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。
353
354**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
355
356**示例:**
357
358```ts
359hidebug.startProfiling("cpuprofiler-20220216");
360// code block
361// ...
362// code block
363hidebug.stopProfiling();
364```
365
366## hidebug.dumpHeapData<sup>(deprecated)</sup>
367
368dumpHeapData(filename : string) : void
369
370> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.dumpJsHeapData](#hidebugdumpjsheapdata9)替代。
371
372虚拟机堆导出。
373
374**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug
375
376**参数:**
377
378| 参数名   | 类型   | 必填 | 说明                                                         |
379| -------- | ------ | ---- | ------------------------------------------------------------ |
380| filename | string | 是   | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 |
381
382**示例:**
383
384```ts
385hidebug.dumpHeapData("heap-20220216");
386```
387