Julia发布全功能调试器:4大新功能问世

量子位 出品 | 公众号 QbitAI

Julia这门语言,因为集合了C语言的速度、Ruby的灵活、Python的通用于一身,获得了万千程序员的喜爱。

福利来了~Julia团队又发布了新的全功能调试器,可以以多种姿势调试代码,节省你的工作量。

有了这个新调试器的加持,你可以用Julia完成此前达不到的惊奇效果,包括:

  • 直接进入函数并手动运行代码,同时检查它的状态
  • 设置断点(breakpoint)、捕捉error,检测到底是哪里出现了错误
  • 交互式地更新和替换现有代码,并且还能无需重新启动快速修复bug
  • 用Juno中的全功能IDE,在易于使用的图形界面中将这些功能捆在一起

是不是有点跃跃欲试了?

核心角色

这个全功能调试器为何如此秀,Julia官网解释说,这是因为里面有一个核心角色:

一个强大的编译器。

官方解释说,这个编译器可以运行Julia代码,同时支持各种前端控件控制具体执行。

每一个前端都是自己的包(package):Juno IDE中就结合了调试器,Rebugger提供了一种REPL文本的UI, Debugger负责提供一般的step/next/continue命令行接口。

所有这些调试功能都可以与Revise无缝集成,所以,你可以在单独的session中连续分析和修改代码。

调试器新功能×2

下面一起来看新功能具体介绍~

Juno

Juno为编译器提供了丰富的接口,支持设置断点,还可以在源代码中直接执行。调试器REPL可以在本地环境中执行任意代码,Workspace可以帮助你检查局部变量。

下面这张图就展示的是gcd调试环节:

Juno.@run宏指令负责解释你的代码,如果遇到断点,则Juno.@enter支持你从第一行重新开始。

Debugger和Rebugger

这是两个REPL接口,Debugger提供类似gdb的 “step, next, continue”接口,而Rebugger提供的是类似IDE一样的控制接口。

Debugger能提供一些其他接口没有的功能,比如对stepping的精细控制,比如执行生成函数的生成器,所以很多情况下Debugger可以成为你的首选。

神奇的包

全能新调试器不仅带来了全新的功能,还为一些已经发布的Julia包赋予了新功能。

它们可能已经不是你熟悉的包了,Julia中已经形成了新的包“生态系统”,由四组大将组成,分别是JuliaInterpreter、LoweredCodeUtils、CodeTracking、Revise和Rebugger。

JuliaInterpreter

JuliaInterpreter是整个堆栈的关键角色,包含各种评估和检查Julia代码运行情况的各种逻辑。

现在,JuliaInterpreter已经在Julia 1.0的基础上扩展了很多新功能,包括:

  • 默认递归:通过编译器运行几乎所有代码,实现断点和捕捉error更加直接。
  • 性能增强:现在通过代码运行step-wise的速度是原始速度的50倍。
  • 新获得了编译“顶级代码”的能力:现在,连定义包和创造测试套件的代码,也可以用它来编译了。
  • 支持断点:你可以把它当作编译器自身另一种形式的控制流。现在可以支持在特定源代码行或特定方法的入口处设置断点,还能自动识别错误。

LoweredCodeUtils

LoweredCodeUtils可以用于建立多种协作方法间的联系,从而起到桥梁的作用。

不过,LoweredCodeUtils是最新包中最深入最难懂的,让不少人头大。

举个例子,下面这个看似简单定义,实际上创建了五种方法,分别是一种body method,两种定位参数方法和两种关键字函数法。

CodeTracking

CodeTracking是一个简单、轻量级的查询API,可以用于从Revise中进行检索。

一般的工作场景是LoweredCodeUtils执行分析,Revise掌管随时间推移出现的各种变化,而CodeTracking负责将这些变化通知到其他组件。

三者分工明确,方便好用。

Revise和Rebugger

这个包最大的变化莫过于一眼看过去,可以发现编译的界面产生了变化。此外,Rebugger还获得了一些新的能力,比如在REPL中定义处理方法。

从长远来看,它对JuliaInterpreter和LoweredCodeUtils的深入分析可能会实现更多以前无法实现的功能。

传送门

https://julialang.org/blog/2019/03/debuggers

Julia发布全功能调试器:4大新功能问世相关推荐

  1. c ++函数功能查询器_C ++ 17新功能和技巧

    c ++函数功能查询器 目录 (Table of Contents) Introduction 介绍 Settings an integrated development environment (I ...

  2. android n对讲功能,Android N 十大新功能汇总,最后一个功能亮了

    随着Android N发布日期的日益临近,新系统越来越多的细节逐渐呈现在了我们眼前. 想知道Android N有哪些强大的新功能吗?一起来看看吧! 一.分屏多任务 进入后台多任务管理页面,然后按住其中 ...

  3. 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量

    为什么80%的码农都做不了架构师?>>>    IntelliJ IDEA在业界被公认为最好的Java开发平台之一,JetBrains公司将在12月正式发布IntelliJ IDEA ...

  4. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

  5. [转载] Java9发布回顾Java 8的十大新特性

    参考链接: Java中的DoubleStream mapToObj() java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习 ...

  6. 苹果对其语音助手Siri进行显著改进:今秋将有7大新功能

    据国外媒体报道,在当地时间周一举行的年度开发者大会上,苹果谈论了很多,但它没有花太多时间讨论Siri语音助手的变化.令人惊讶的是,从iPhone到CarPlay再到Apple TV,Siri在苹果产品 ...

  7. 评论回复功能 asp.net_微信重大更新!公众号推送时间线打乱+7大新功能上线!怎么玩?...

    作者 |韩俊杰来源 |馒头商学院「ID:mantousxy」自从微信年初举办公开课后,每个月都没闲着,各种新功能.小改版层出不穷.就在最近,微信又接连推出几项新功能,动作让人"眼花缭乱&qu ...

  8. iphone android 功能清单,让iPhone羡慕:Android N最赞10大新功能

    原标题:让iPhone羡慕:Android N最赞10大新功能 不久,谷歌将正式发布Android N,它有超过250个新功能.安卓粉有福了. 很多新功能的目标都是使Android体验更快,更愉快,更 ...

  9. Java9都快发布了,Java8的十大新特性你了解多少呢?

    Java 9预计将于今年9月份发布,这是否会是一次里程碑式的版本,我们拭目以待.今天,我们先来复习一下2014年发布的Java 8的十大新特性. Java 8可谓是自Java 5以来最具革命性的版本了 ...

最新文章

  1. 你的接口,真的能承受高并发吗?
  2. [转载]ACM搜索算法总结(总结)
  3. Android实训日志:基于外部存储卡的音乐播放器V02
  4. bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【LCT】
  5. mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据
  6. 对Linux命令od -tc -tx1的C语言程序实现myod-优化版
  7. Arrays类中的fill(用于填充数组)
  8. python修改txt里面的内容_python修改txt部分内容,并保存。
  9. 2020年中国医疗卫生机构数量、床位、人员和诊疗次数现状,疫情下诊疗人数有所下降「图」
  10. java实现马尔科夫链,马尔科夫链算法的JAVA实现
  11. 全国行政区划代码(json对象)---包含键值对的城市代号和城市名称的json对象代码(不包括县级市)
  12. Java全栈(前端+后端)工程师学习路线
  13. 学Python更多是为了摸鱼,大多数人都这么做
  14. 【Arduino学习笔记】系列1 - 定时器配置
  15. 【Vuejs】1017- Vue3 效率提升主要表现在哪些方面?
  16. 人工智能的“虚假式繁荣”
  17. 贝格尔编排法的PHP实现
  18. 鲍尔默评论谷歌退出中国事件
  19. reduce函数详解以及自己实现一个reduce函数
  20. LabVIEW中ActiveX控件、ActiveX服务器和类型库注册

热门文章

  1. 收款码在线生成系统源码 无限制
  2. Hadoop-提高性能(调优)方法
  3. Ipconfig ping tracert netstat arp的使用
  4. 华为ENSP之出口网关设备故障vrrp快速切换
  5. 微信小程序中显示换行、空格
  6. java数据类型最大值_Java 基本数据类型最大值极限和最小值极限
  7. 国内电商系统为什么要以ThinkPHP为核心开发
  8. 云计算 常见问题案例汇总情况
  9. 为什么pdf文件在一个计算机上能打开,拷贝到别的计算机上就打不开,显示文件已损坏?,pdf文件在电脑上打不开怎么办...
  10. Python v / s PHP:2019年选择哪种编程语言?