js的调试始终是一个比较麻烦也是比较困难的事情,从最原始的alert调试,到火狐的firebug工具,在到后来各个浏览器厂商的调试工具。调试工具的发展历程,也可以看出由JS构建的业务和技术逻辑越来越复杂,最初的调试工具已经不能很好的满足复杂逻辑调试。随着nodejs在服务端变得越来越热门,对于nodejs的调试也成了各个nodejs开发人员头痛的问题,还好现在各种调试工具也在不断的出现。今天主要总结一下命令行调试工具和inspector调试工具。
一 命令行调试工具使用
命令行调试工具使用,需要在启动js文件,通过这样的方式: node debug example.js,
》 node debug example.js
调试模式启动之后,默认程序停在了当前执行文件的第一行, 可以通过 next(n) 下一步, continue(cont), 执行到下一个断点,run(r)执行程序完成 ,step(s)进入函数内部,out(o)退出函数内部,backtrace(bt)打印当前执行堆栈, setBreakpoint(sb) 设置断点, clearBreakpoint(cb) 清楚断点, repl开启一个表达式执行控制台,restart重启调试,list(k)列出当前行,前后k行代码, scripts已经加载的JS文件列表等。
对于watch 和unwatch命令,能够增加对变量值的监控,通过watch('a), 之后,可以实时查看变量a值的变化,同时也可以通过unwatch('a')的方式取消监控。
还有另外一种方式启动调试模式,即通过kill命令给执行的node进程发送SIGUSR1信号,发送方式为: kill -s USR1 pid,
通过命令行的方式,可以在需要调试的时候,快速进入调试,从而解决问题,但是对于对命令行操作感觉有点困难的人来说,这个不是很友好的方式。当然inspector这方面就可能比较有优势。
二 inspector调试工具的使用
当然Inspector调试工具集成了V8引擎内部的调试API和Blink的界面交互功能,从而使的服务端JS的调试也可以像浏览器端调试JS那样方便。但是这种调试方式也只能在具有 blink开发工具的浏览器下进行。
为了能够使用inspector工具,首先需要安装他,当然了这个只是作为开发的全局安装: npm install -g node-inspector
安装完成之后,要调试某个JS文件,首选需要开启调试模式,比如上边的example.js 那么开启模式为:node debug example.js
然后在另外的terminal 启动 inspector ,启动方式为: node-inspector ,操作界面是每个前端都非常熟悉的界面,如下:
通过这两种方式,后期我们在开发的时候,就能够很好的调试nodejs。