一、引言
只要有过一点点想要学习算法的同学们,肯定都了解过这样一本书
算法 第 4 版
这是一本奇书,具体好在哪里,我没看完也没有什么可以说的。但是关于这本书的配置环境,还是值得一谈的。
这本书使用了 algs4.exe
来一键安装所有的配置环境,这一点必须要点赞。可惜,我们在中国的网络环境下很难配置成功。这一点我通过翻墙来得以解决。
另外,这本书推荐了一个免费的 IDE - DrJava 。对于这个 IDE 的资料很少,并且只有英文资料。相信这一点就足以将许多读者拒之门外,进而选择 Eclipse 、IntelliJ Idea 等等更加强大完善的 IDE。
但是呢,虽然 DrJava 简陋,但是功能也不弱小。有过刷 LeetCode 经验的我,甚至更喜欢那种越是简陋的编辑器,越是能够给自己带来一种编码的纯净感和思维的连续感。
那么,让我们来探索下 DrJava 这款 IDE 的调试功能吧。
二、简陋但是五脏俱全的 DrJava
第一门上手语言是 C++,从而自然而然使用了 VS。真是不用不知道,一用了其他 IDE,真心觉得 VS 真的很强大,尤其是调试功能。
这里针对于 DrJava 的调试功能进行探索。
让我们打开 DrJava 的 Debugger 栏,可以看到里面的这些菜单选项,这就是我们能用到的调试项。我来一一解释一下:
调试项 | 用途 |
---|---|
Debug Mode | 点击这个按钮,当前程序运行后将进入调试模式,可以响应用户的断点、查看变量值等等 |
Toggle Breakpoint On CurrentLine | 在当前行打断点 |
Clear All BreakPoints | 删除所有的断点信息 |
BreakPoints | 显示当前程序中所有的断点信息 |
Resume Debugger | 重新运行程序,进入第一个断点停住 |
Step Into | 进入一个函数内部 |
Step Over | 执行完当前这句,移动到下一句停止 |
Step Out | 执行到下一个断点为止 |
Automatic Trace | 每隔一段时间(感觉像是1s)自动执行每一行,会让你看到执行过程,可以随时点击 Disable Trace 停止 |
Detacn Bugger | 退出 Debug 模式 |
三、让我们调试一个程序试试
这里,我选择了一份代码,选择进行调试。
- 首先点击
Compile Project
编译这个项目,当然也可以只编译一个文件,这里我事先就已经创建了一个项目了,所以是Compile Project
。 - 然后,我们在代码中 第 17 行打上断点。这里可以使用鼠标右键选择
Toggle Breakpoint
或者快捷键Ctrl + B
均可。打上了断点的行会显示为红色背景。
同时,如果我们点击Debugger -> Breakpoints
,还可以看到我们在整个项目中打下的所有断点的信息。 - 进入 Debug Mode。我们点击
Debugger -> Debug Mode
可以进入 Debug 模式。然后点击 Run。
此时,我们在 Interactions
出看到了项目弹出的输入框,这是我们程序需要输入的内容,我输入了程序需要的 1 3
两个值,然后程序自动运行到了第 17 行停下,这也是我们之前打了断点的地方。
我们可以看到断点处背景变为了蓝色,并且出现了 Watches
、 Stack
、Threads
等等窗口。通过这里,我们可以了解和控制调试过程。
- 我们来进入 caculate 函数调试。
点击Debugger -> Step Into
或者是 F12,我们可以进入这个函数执行代码。
点击Debugger -> Step Over
或者是 F11,我们可以一行一行执行代码。
点击Debugger -> Step Out
或者是 Shift + F12,我们可以运行到下个断点处。
我们甚至还可以点击红框处,进行更多调试项的使用。
5. 让我们来查看下一些临时变量的值。
这里有点不人性化的是,查看临时变量的值好像只能通过手动在 Watches
窗体下的 Name
栏目中输入此变量的值来查看,DrJava 则会自动计算它的值并显示出来。这里你们看到的 Wataches
里面的变量都是我事先已经输入了的。通过这里,我们可以了解我们需要的变量的值的变化。
四、DrJava 小巧并且强大
怎么说呢,接触过的 IDE 不过,有 vs,有 code blocks,有 eclispe。
他们都是非常强大的集成开发环境,但是对于一个学生来说,太强大有时候也意味着太不适合新手。新手也许更需要一款,没有智能提示的,没有好看易用的界面的,能够让用户快捷、方便、自由的使用和编译自己的初学代码的这么一款 IDE。
那么恭喜你,DrJava 就是这么一款小巧而且强大的 IDE。
它的文本编辑器调成 Consolas - 14 的时候,还是比较好看的。虽然没有智能提示,甚至没有大括号自动匹配输入,但是也正是因为这些,才逼迫像我这样的初学者能够专心于自己输入的文字,专心于自己的代码逻辑,而不被其他的杂七杂八的东西所干扰。
通过自己的观察,DrJava 的调试功能用来学习 《算法 第 4 版》足足够了,只需要手动添加一些 jar 文件,其他的都完全够用了,甚至比一些强大的集成开发环境更适合学习。
其实我也正在寻找一款支持 C++11 的像这样的一款 IDE,小巧,而且适合刷 LeetCode 的,其实也正是因为在刷 LeetCode,反而不喜欢 vs 这样具有强大的提示功能的 IDE。刷了这么久,反而越来越喜欢 LeetCode 的在线代码编辑了哈哈。