本文讨论调试JavaScript的方法。
在浏览器中,我们可以通过dev tools去调试,也可以分析内存,cpu使用情况,dev tools本文就不探讨了,里面的profile工具甚是好用。
我们去看看node怎么调试。
下面是一些调试工具
node-inspector
如果很想保持在浏览器的使用习惯,可以使用node-inspector。由于这个工具太熟悉了,用npm安装一下,没必要啰嗦了,直接用吧。
webstorm
很好用的IDE:https://www.jetbrains.com/webstorm/
visual studio
在"扩展与跟新"中可以下载。
console
这才是本文要介绍的。实际上文档已经写的很清楚了,这里就看一个例子吧。
写一个简单的测试文件test.js
"use strict";
var FS = require("fs");
FS.stat("test.js", function(err, data) {
if (err) {
console.log("error:" + err);
} else {
console.log(data);
}
});
FS.stat("test1.js", function(err, data) {
if (err) {
console.log("error:" + err);
} else {
console.log(data);
}
});
var x = 1 + 1;
console.log(x);
function fn() {
var y = "you and me";
console.log(y);
}
fn();
无论何时,控制台打印都是很好的调试方法。
打印有几个好的地方:
- 可以保存到文件,后面再看。
- 程序发布以后也可以看到,而使用断点调试的条件一般是在开发环境中。
- 远程查看也很方便。
- 不会影响程序运行。
debugger
上面的控制台打印有几个不好的地方
- 需要对代码很熟,要知道在哪里打印
- 需要嵌入console代码
- 打印object需要转成字符串
- 打印太多的log,需要仔细查看,过滤
- 对时序问题,打印不容易看出来
这里只是简单总结一下,希望读者可以回复补充。接下来我们实战一下debug的方法。
1. 使用debug模式运行js
2. 查看调试帮助
可以看到支持的命令。
3. 设置断点
sb(5)
sb(13)
sb(25)
4. 继续运行,查看值
c
repl
5. 查看当前上下文
可以看到当前代码在哪行
list(5)
总结
这个debugger比起有图形界面的肯定是挫了太多,不过有总比没有好。我们在懒得装图形工具的时候,可以用这个救救急,而且,人家也没有那么不好用,越难用的工具需要你脑子越清楚,这样反而有助于思考,这可能是现在还有很多人喜欢用vim和emacs的原因吧。
本文参考:
官方文档:https://nodejs.org/api/debugger.html