我们来探讨一下调试器一个神奇的功能:内置的REPL。我们可以通过repl命令来访问:
debug> repl
Press Ctrl + C to leave debug repl
这是一个标准的REPL,包含了你使用repl时的上下文环境。举个例子,我们可以输出toAdd的参数:
> toAdd
25
还可以为应用程序引入其他状态,例如创建一个全局变量b:
> b = 100100
这就是标准的Node REPL,很多你可以在其他地方使用的功能,在这里也可以实现。
在任意情况下使用Ctrl-C便可以退出REPL。我们尝试一下,现在你可以从调试的提示中看到,已经退出了REPL了。
debug>
在REPL中待了一会,好像忘记停留的上下文环境,可以再次使用list来查看一下:
是的,我们刚才停留在了第8行。正如你所知道的那样,我们想要changeA让a赋值为100。这对于变量a来说是一个多么漂亮的数字。但是我们忘了,这还是在调试模式下。没问题,我们可以使用setBreakpoint(缩写为sb)设置断点来保留当前场景。
请注意现在第8行代码前边多了一个星号(*)来表示我们在该位置设置了一个断点。在代码中修改当前函数并且保存:
function changeA () {
a = 100;
}
回到调试器,重新运行应用:
程序重新启动了,而设置的断点则还是原封不动。我们的修改有效了么?看一下:
另外一种在程序代码里正确设置断点的方式是使用debugger关键字:
function changeA () {
debugger;
a = 100;
}
如果我们再次重新启动程序,会停留在debugger的代码行上边。我们可以使用clearBreakpoint(缩写为cb)来清除设置的断点。