【Julia 1.0 传教-02】Julia 调试

【Julia 1.0 传教-02】Julia 调试

明年年初,中美合作(我和 @兴趣使然千里冰封 )的 Julia 调试器即将上线 julia-intellij ,我将继续编写插件代码,努力创造一个让海内外码农满意的,正能量的调试器。文体两开花,弘扬中华文化,希望大家能够多多关注。

(据说 Julia 的 Debugger 大家盼了很久emmmm)

下载安装

在插件没有上线之前我们可以先到 ci.appveyor.com/project 下载最新测试版本。Linux和macOS下正常运行。Windows 下我第一次按下 debug 会导致整个界面卡顿 1分钟,暂时无解……据我推测原因是 Julia 在 windows 下第一次打开真的会卡半天……


整个插件 github 仓库的地址

ice1000/julia-intellijgithub.com图标


在 Julia 中安装这俩包(一定要是github仓库的最新版本的)

依赖项

  • ASTInterpreter2
  • DebuggerFramework
  • JSON
(v1.0) pkg> add DebuggerFramework#master
(v1.0) pkg> add ASTInterpreter2#master
(v1.0) pkg> add JSON

(话说 JSON 包基本等同于自带了……因为随便安装几个其他的 package 都会有这个,属于隐藏依赖项,但是由于pkg3的机制,必须要显式add JSON才能用。)


为了方便我打开了个WebStorm(打开速度应该是最快的),把下载下来的插件安装上。

(在这里我是习惯下载下来以后直接从文件夹把插件的压缩文件直接拖进主界面代码编辑的部分,然后重启。)


重启之后正常创建一个项目。写一段代码……然后加上 @enter 宏以及打断点( 为什么看起来这么多此一举,如果能不用@enter 宏而直接打断点就能用那真的是太完美了!于是乎我就强行加了个判断,如果你没有点出一个断点我 debug 的那个绿色虫子图标都不给你亮的 哈哈哈哈)

因为红点是给 JB看的,而宏是给Julia看的→_→


然后就可以开始调试啦~\(≧▽≦)/~

Step Over (按了两次,对应ASTInterpreter2nc命令)

可以看到旁边的临时变量表 i 变成了9。

Step Into(对应ASTInterpreter2sg命令)。又按了次 Step Over 以后输出了 弧度制的sin(9)的值, 因为我们按下了 Step Into 所以进入到更深的调用层。这里就是进入了 大于号函数,0和9的比对,对应 while 语句的判断。


然后我们Step Out(对应ASTInterpreter2finish命令)。我们再次进入到三角函数中:

看左下角的调用栈23333


基本上也就是这样了,然后退出疯狂按 Step Out,把剩下需要打印的都打印出来了。


虽然在Julia里面已经退出调试了。但是其实在 IDE 里面这个进程还没有结束(为什么?因为考虑到加载Julia是一件很费时的事情,所以我们一般保留这这个session,只要在这个Debug的console里面的 julia 中按↑键出现上一次的历史,就可以看到include("文件")还可以接着调试。也就是说你用 include 的方式对一个文件不断地调试~\(≧▽≦)/~啦啦啦

局限性

注意用法上 @enter 只能对调用的表达式使用,不要随意打断点。。。

IDE 里面的红点只是摆设,但是必须要有至少这么一个,不然停不下来,也就没法显示堆栈信息和局部变量23333

你学会了什么

你什么都没学会,因为我只是当了一次调包侠23333……

编辑于 2019-01-04

文章被以下专栏收录