如何调试Node.js服务器应用程序?
现在,我主要使用如下打印语句的警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也适用于Node.js吗?
如何调试Node.js服务器应用程序?
现在,我主要使用如下打印语句的警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也适用于Node.js吗?
当前回答
IntelliJ在Node.js上运行得很好。
此外,IntelliJ还支持“代码协助”。
其他回答
假设您的计算机上安装了节点检查器(如果没有,只需键入“npm install-g node inspector”),您只需运行:
node-inspector & node --debug-brk scriptFileName.js
然后从命令行将URI粘贴到WebKit(Chrome/Safari)浏览器中。
我将选择Visual Studio代码进行调试。没有安装任何工具或npm安装工具的开销。只需在package.json中设置应用程序的起点,VSCode就会自动在解决方案中创建一个配置文件。它是建立在Electron之上的,像Atom这样的编辑器都是建立在该之上的。
VS Code提供了与您可能拥有的类似的调试经验在其他IDE中,如VS、Eclipse等。
调试
Joyent指南调试器节点检查器Visual Studio代码云9括号
分析
节点--教授/应用程序.jsnode—prof进程/生成的日志文件
堆转储
使用Chrome开发者工具的节点堆转储
火焰图
0倍jam3/devtool然后是Chrome开发者工具火焰图Dtrace和StackVis-仅在SmartOS上受支持临床医师
跟踪
使用TraceGL的交互式堆栈跟踪
登录中
输出调试信息的库
毛虫示踪剂潦草
增强堆栈跟踪信息的库
朗约翰
标杆管理
Apache工作台:ab-n 100000-c 1http://127.0.0.1:9778/wrk公司
另外
查出优势家伙Google跟踪框架保罗·爱尔兰指南
遗产
这些功能可以使用,但不再维护或不再适用于现代节点版本。
https://github.com/bnoordhuis/node-profiler-替换为内置调试https://github.com/c4milo/node-webkit-agent-由节点检查器替换https://nodetime.com/-失效
您可以尝试捕获错误:
function yourFunc() {
try {
// YOUR CODE HERE
} catch (err) {
console.error(err.message + ", " + err.trace);
}
}
错误消息和错误跟踪将为您提供识别和纠正运行时错误所需的信息。
如果需要,可以使用纯Node.js并在控制台中调试应用程序。
例如,让我们创建一个要调试的虚拟debug.js文件,并在其中放置断点(调试器语句):
设a=5;调试器;a*=2;调试器;设b=10;调试器;设c=a+b;调试器;控制台日志(c);
然后可以使用inspect命令运行此文件进行调试:
node inspect debug.js
这将在控制台中启动调试器,您将使用类似于以下内容的输出:
< Debugger listening on ws://127.0.0.1:9229/6da25f21-63a0-480d-b128-83a792b516fc
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
2 debugger;
3
您可能会注意到,文件执行已在第一行停止。从这一刻起,您可以使用以下命令(热键)逐步浏览文件:
继续,接下来转到下一个断点,在步骤中,走出去暂停以暂停
让我们多次键入cont,看看如何从断点切换到断点:
debug> next
break in misc/debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
2 debugger;
3
debug> next
break in misc/debug.js:2
1 (function (exports, require, module, __filename, __dirname) { let a = 5;
> 2 debugger;
3
4 a *= 2;
debug> next
break in misc/debug.js:4
2 debugger;
3
> 4 a *= 2;
5 debugger;
6
我们现在可以做的是通过编写repl命令来检查变量值。这将允许您写入变量名称并查看其值:
debug> repl
Press Ctrl + C to leave debug repl
> a
5
> b
undefined
> c
undefined
>
你可能会看到,此时a=5,b和c未定义。
当然,对于更复杂的调试,您可能需要使用一些外部工具(IDE、浏览器)。你可以在这里读更多。