HarmonyOS Next开发学习手册——JSVM-API调试&定位

JSVM,既标准JS引擎,是严格遵守Ecmascript规范的JavaScript代码执行引擎。 详情参考: JSVM 。

基于JSVM的JS代码调试调优能力包括:Debugger、CPU Profiler、Heap Snapshot、Heap Statistics。涉及以下接口:

接口名 接口功能
OH_JSVM_GetVM 将检索给定环境的虚拟机实例。
OH_JSVM_GetHeapStatistics 返回一组虚拟机堆的统计数据。
OH_JSVM_StartCpuProfiler 创建并启动一个CPU profiler。
OH_JSVM_StopCpuProfiler 停止CPU profiler并将结果输出到流。
OH_JSVM_TakeHeapSnapshot 获取当前堆快照并将其输出到流。
OH_JSVM_OpenInspector 在指定的主机和端口上激活inspector,将用来调试JS代码。
OH_JSVM_CloseInspector 尝试关闭剩余的所有inspector连接。
OH_JSVM_WaitForDebugger 等待主机与inspector建立socket连接,连接建立后程序将继续运行。发送Runtime.runIfWaitingForDebugger命令。

本文将介绍调试、CPU Profiler、Heap Snapshot的使用方法。

调试能力使用方法

调试步骤

  1. 在应用工程配置文件module.json中配置网络权限:
"requestPermissions": [{
  "name": "ohos.permission.INTERNET",
  "reason": "$string:app_name",
  "usedScene": {
    "abilities": [
      "FromAbility"
    ],
    "when": "inuse"
  }
}]
  1. 为避免debugger过程中的暂停被误报为无响应异常,可以 开启DevEco Studio的Debug模式 (无需设置断点),或者可以在非主线程的其他线程中运行JSVM。
  2. 在执行JS代码之前,调用OH_JSVM_OpenInspector在指定的主机和端口上激活inspector,创建socket。例如OH_JSVM_OpenInspector(env, “localhost”, 9225),在端侧本机端口9225创建socket。
  3. 调用OH_JSVM_WaitForDebugger,等待建立socket连接。
  4. 检查端侧端口是否打开成功。hdc shell “netstat -anp | grep 9225”。结果为9225端口状态为“LISTEN"即可。
  5. 转发端口。hdc fport tcp:9229 tcp:9225。转发PC侧端口9229到端侧端口9225。结果为"Forwardport result:OK"即可。
  6. 在chrome浏览器地址栏输入"localhost:9229/json",回车。获取端口连接信息。拷贝"devtoolsFrontendUrl"字段url内容到地址栏,回车,进入DevTools源码页,将看到在应用中通过OH_JSVM_RunScript执行的JS源码,此时暂停在第一行JS源码处。
  7. 用户可在源码页打断点,通过按钮发出各种调试命令控制JS代码执行,并查看变量。
  8. 调用OH_JSVM_CloseInspector关闭inspector,结束socket连接。

示例代码

#include "ark_runtime/jsvm.h"

#include <string>

using namespace std;

// 待调试的JS源码
static string srcDebugger = R"JS(
const conca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值