怎样调试 Node. js程序(),node.js 调试

  怎样调试 Node. js程序(),node.js 调试

  如何调试nodejs程序?下面这篇文章介绍nodejs调试debug的方法,希望对你有帮助!

  node.js速度课程简介:进入学习

  对于开发者来说,在开发应用的过程中,为了方便开发和解决bug,往往需要求助于编程语言的调试功能。一般来说,我们需要使用强大的IDE的调试功能来完成这项工作。Nodejs也不例外。

  今天,我们将详细介绍如何调试节点程序。

  

开启nodejs的调试

  还记得我们之前说过的koa计划吗?本文将以一个简单的koa服务器程序为例来调试nodejs。

  先看下简单的koa服务app.js:

  const Koa=require( Koa );

  const app=module . exports=new Koa();

  app.use(异步函数(ctx) {

  ctx.body= Hello World

  });

  如果(!module . parent)app . listen(3000);上面的程序打开了端口3000并建立了一个http服务。每次请求都会返回hello World,很简单。

  要运行上面的程序,我们需要执行nodeapp.js,这样会执行app.js但不会开启调试功能。

  怎么调试?

  我们需要添加- inspect参数:

  node-inspectapp.js上面的代码会打开nodejs的调试功能。

  让我们来看看输出:

  ws上的调试器侦听://127 . 0 . 0 . 1:9229/88c 23 AE 3-9081-41cd-98b 0-d0f 7 ebce ab 5a

  如需帮助,请参见:https://nodejs.org/en/docs/inspector结果告诉我们两件事。第一件事是调试器监听的端口。默认情况下,127.0.0.1的端口9229将被打开。并分配一个唯一的UUID来区分它。

  第二件事是告诉我们nodejs使用的调试器是Inspector。

  在nodejs 8之后引入了Inspector。如果是在nodejs 7之前,那么使用遗留调试器。

  

调试的安全性

  如果调试器连接到nodejs运行环境,如果有恶意攻击者,这个恶意攻击者可以在nodejs环境中运行任意代码。这会给我们的程序带来很大的安全隐患。

  所以一定要注意调试的安全性。一般来说,不建议远程调试。

  默认情况下,- inspect绑定到127.0.0.1,因此只有本地程序可以访问它。并且任何本地运行的程序都有权调试该程序。

  如果真的要将调试程序暴露给外部程序,可以注明本地计算机的外网IP地址或者0.0.0.0(意思是任意地址,不限),这样远程计算机就可以远程调试了。

  如果我们想进行安全的远程调试,我们应该怎么做?

  首先,我们必须打开本地调试:

  然后我们可以构建一个ssh隧道来将本地端口9221映射到远程服务器端口9229:

  SSH-l 9221:localhost:9229 user@remote.example.com,这样我们可以通过连接到本地端口9221进行远程调试。

  

使用WebStorm进行nodejs调试

   JetBrains出品的WebStorm可谓是开发nodejs的利器。WebStorm带有调试选项。如果您打开此选项,它将在后台打开-检查:

  用WebStorm调试和用IDEA调试java程序差不多,这里就不介绍了。

  

使用Chrome devTools进行调试

  用Chrome devTools调试的前提是我们开启了- inspect模式。

  在chrome中输入chrome://inspect:

  我们可以看到chrome inspect的界面。如果您已经有了在本地打开inspect的nodejs程序,那么您可以在远程目标中直接看到它。

  选择要调试的目标,然后单击inspect打开Chrome devTools调试工具:

  您可以分析或调试程序。

  我们在这里着重于调试,所以转到source列,添加您想要调试的程序的源代码:

  添加断点以开始调试。和chrome在web端调试js是一样的。

  

使用node-inspect来进行调试

  其实nodejs有自己的调试工具,叫做node-inspect,是cli的一个调试工具。让我们看看如何使用它。

  我们直接使用:

  节点检查app.js

  在ws上侦听的调试器://127 . 0 . 0 . 1:9229/f1c 64736-47a 1-42c 9-9e9e-f 2665073 d3eb

  如需帮助,请参见:https://nodejs.org/en/docs/inspector

  附加了调试器。

  app.js:1中的开始时中断

  1 const Koa=require( Koa );

  2 const app=module . exports=new Koa();

  三

  Debugnode inspect做了两件事。第一件事是生成子程序运行Node-InspectApp.js,第二件事是在主程序中运行CLI调试窗口。

  这个CLI调试器为我们提供了一些非常有用的命令:

  1、Stepping

  Cont,c:继续执行下一步,n:步进到下一步,s:步进inout,o:步进暂停:停止运行的代码2、Breakpoints

  SetBreakpoint(),sb (): setBreakpoint(line),sb(line,sb (line):在指定行设置断点( fn()),sb (…):在指定函数处设置断点( script.js ,1),Sb(…):在指定脚本文件中设置断点ClearBreakpoint (script.js ,1),CB (…):从文件中清除断点3、Information

  Backtrace,bt:打印当前执行帧的backtrace信息列表(5):列出源代码前后五行watch(expr):添加监控表达式unwatch(expr):删除监控表达式watchers:列出所有watchersrepl:打开repl表达式exec expr:执行表达式。使用上面的命令,我们可以在CLI中执行更复杂的调试活动。

  

其他的debug客户端

  除了上面提到的,我们还可以使用vscode、Visual Studio、Eclipse IDE等。来调试nodejs,所以这里就不详细介绍了。

  有兴趣的朋友可以自行探索。

  更多关于node的信息,请访问:nodejs教程!这就是如何开始nodejs调试。如何调试nodejs程序?更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: