原文:https://mp.weixin.qq.com/s/JKVLQXu1z1zAoF5q49YEGg,点击链接查看更多技术内容。
 
HUAWEI DevEco Studio是开发HarmonyOS应用及服务的一站式集成开发环境。本次分享DevEco Studio 3.1 Canary1上线的新特性- ArkTS与C++跨语言调试,让调试更便捷高效。

一、什么是跨语言调试

在日常开发活动中,开发者会灵活运用每种开发语言的长处来编写程序,在一个工程中可能会包含多种语言。

一般情况下,会在HarmonyOS的工程中使用ArkTS来承载页面和业务逻辑,用C++来实现性能要求较高的底层逻辑。这样,在代码调试时,就会面临同时调试两种语言的问题。如果只能使用单语言调试的方式,就需要频繁的切换调试会话、重启应用,还需要在C++语言中手动添加断点,且调用链断层不连续。这样在整个调试过程中,需要大量的手工操作,每次切换过程还需要6s左右的无效等待时间,调试效率较低。

针对这种多语言的开发场景, DevEco Studio提供了便捷高效的调试定位能力,支持ArkTS与C++跨语言调试,可同时调试ArkTS、C++这两种语言,整体操作体验与单一语言调试一致。在调试运行到调用C++代码处,断点能够直接Step Into跳转到C++代码,整个调试过程连续,无需额外在对应语言去手动添加断点,避免了在此过程过多的手工操作,并且无需等待,大幅提升了调试效率。

二、跨语言调试类型设置

当开发者选择Dual(Js+Native)调试类型时,可快速启动ArkTS与C++的跨语言调试能力。

调试过程先通过单步调试ArkTS代码,当程序运行到调用C++方法的代码行(通常会在这里设置断点),只需单击Step Into功能按钮,就能够直接跳转到C++对应代码行,便可以继续在C++代码中进行调试。当C++代码执行结束后,单击resume program功能按钮,可跳到有设置断点的ArkTS代码行。

开发者选择调试类型

调试过程中如果想终止,随时通过单击Stop按钮来终止调试模式的运行。

开发者通过在运行调试配置下拉框选择Edit Configuration或单击菜单栏Run > Edit Configurations,选择OpenHarmony APP下的模块名,选择右侧窗口中的Debugger,将Debug type设置为“Dual(Js + Native)”或“Detect Automatically”启动ArkTS与C++的跨语言调试能力。

ArkTS与C++的跨语言调试展示效果

具体跨语言调试的操作方法请复制链接至浏览器查看:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/arkts-js-native-cross-language-debugging-0000001434296861-V3

此外,DevEco Studio还提供了多线程调试,为我们开发者提供了更便捷的调试方法。

当应用中有耗时操作时,一般我们开发者会使用worker线程来处理,避免与UI主线程争抢资源,造成UI卡顿。但是在传统调试时,一次只能调试一个线程,处理一个调试堆栈。

针对多线程应用的调试场景,DevEco Studio推出了多线程调试能力,同时管理多个线程的调试资源,我们开发者可以在调试过程中随意切换待调试的进程,查看该进程的调试堆栈信息,有效提升了开发效率。

多线程调试

开发者在多线程开发场景下,直接使用调试功能即可。

DevEco Studio未来计划推出以下两个调试能力,进一步提升开发效率。

1)C++时光调试:开发者可以在C++代码中进行反向调试,针对偶发性的问题,一旦重现后,可以反复进行正向和反向的调试,让我们开发者有机会通过多遍的调试进行问题分析。

2)热重载能力:在调试过程中发现了代码bug,修改代码保存后,无需重启调试,就能立即在真机上看到修改后的效果,将大幅缩短调试过程中的等待时间。

更多惊喜功能,敬请期待!

DevEco Studio新特性分享-跨语言调试,让调试更便捷高效的更多相关文章

  1. 四、C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 .NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就 ...

  2. Java SE 6 新特性: 对脚本语言的支持

    2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Musta ...

  3. 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...

  4. 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  5. [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  6. es6新特性分享

    1.字符串查找es5使用是indexOf() 返回字符第一次出现的位置int值es6新增了3个方法:includes()/startsWith()/endWith()返回bool值includes = ...

  7. HTML5新特性之跨文档消息传输

    1.同域限制 所谓“同域限制”是指,出于安全考虑,浏览器只允许脚本与同样协议.同样域名.同样端口的地址进行通信. 2.window.postMessage方法 浏览器限制不同窗口(包括iFrame窗口 ...

  8. RocketMQ4.4.0新特性分享

    rocketmq1.架构 MQ历史 由数据结构队列发展而来 MQ使用场景 异步处理 解耦 削峰填谷 数据同步2.队列3.使用 生产 同步(sync) 默认重试2次总共3次 默认等待超时时间为3s 异步 ...

  9. JDK1.7新特性(4):java语言动态性之反射API

    直接通过一个代码示例来熟悉java中通过反射来对构造函数/域以及方法处理的相关API: package com.rampage.jdk7.chapter2; import java.lang.refl ...

  10. JDK1.7新特性(3):java语言动态性之脚本语言API

    简要描述:其实在jdk1.6中就引入了支持脚本语言的API.这使得java能够很轻松的调用其他脚本语言.具体API的使用参考下面的代码: package com.rampage.jdk7.chapte ...

随机推荐

  1. docker知识整理(备份)

    概念: 镜像:Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板 .镜像是创建 Docker 容器的基础.通过版本管理和增量的文件系统, Docker 提供了一套十分简单的机制来创建和更 ...

  2. BIGO 的数据管理与应用实践

    本文首发于 Nebula Graph Community 公众号 本文整理自 BIGO 在 nMeetp 上的主题分享,主要介绍 BIGO 过去一年在数据管理建设方面的理解和探索.而 BIGO 数据管 ...

  3. linux网络编程基础知识汇总(更新中)

    阿帕网 arpanet 阿帕网为美国国防部高级研究计划署开发的世界上第一个运营的封包交换网络,它是全球互联网的始祖. 局域网 LAN(Local Area Network ):通过路由器和交换机把计算 ...

  4. 彩虹猫IDA分析记录

    目录 彩虹猫分析 概述 无参启动 带/main参数启动 带/watchdog参数启动 MBR引导程序和动画程序 第一段 引导代码 第二段 动画代码 其他函数 扭曲桌面 扰乱鼠标 钩子函数 桌面绘制图标 ...

  5. 实现一个 SEO 友好的响应式多语言官网 (Vite-SSG + Vuetify3) 我的踩坑之旅

    在 2023 年的年底,我终于有时间下定决心把我的 UtilMeta 项目官网 进行翻新,主要的原因是之前的官网是用 Vue2 实现的一个 SPA 应用,对搜索引擎 SEO 很不友好,这对于介绍项目的 ...

  6. python 生成虚拟环境requirement.txt

    # 在项目根目录中,打开终端执行以下命令 # 生成 requirements.txt 文件 pip3 freeze > requirements.txt # 安装依赖文件 pip3 instal ...

  7. gap 单词学习 对标 open

    为什么gap 和 open 联系记忆呢? gap是从行为动作中来 open 中 op 就是 up,是从 单词字母的角度来 但是 本意 这两个单词都差不多 gap gap : 来自PIE*ghai,打呵 ...

  8. printJS 打印 无头无尾 style 加 @page { margin: 0; } body { padding: 100px;}

    // 使用npm模块 print-js printJS({ printable: this.printData, type: 'json', documentTitle: ' ', propertie ...

  9. BES2500开发板介绍和入门

    一 前记 BES2500是恒玄科技推出的款高端的TWS耳机芯片,该芯片的性能非常强悍.蓝牙5.2双模,1.8M的SRAM空间,ARM-M33的主核,绝对是音频耳机芯片中的高配,性能不是一般的强.该芯片 ...

  10. vue入门教程之-组件

    vue入门教程之-组件 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 https://www ...