我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么 调试nodejs程序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么 调试nodejs程序

本篇文章为大家展示了怎么 调试nodejs程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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

今天我们来详细介绍一下如何调试node程序。

开启nodejs的调试

还记得之前我们讲到的koa程序吗?本文将会以一个简单的koa服务端程序为例,来展开nodejs的调试。

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

const Koa = require('koa');
const app = module.exports = new Koa();

app.use(async function(ctx) {
  ctx.body = 'Hello World';
});

if (!module.parent) app.listen(3000);

上面的程序开启了3000端口,建立了一个http服务。每次请求的时候,都会返回hello World,非常的简单。

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

怎么进行调试呢?

我们需要加上 --inspect 参数:

node --inspect app.js

上面的代码将会开启nodejs的调试功能。

我们看下输出结果:

Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a
For help, see: https://nodejs.org/en/docs/inspector

结果告诉了我们两件事情,第一件事情就是debugger监听的端口。默认情况下将会开启127.0.0.1的9229端口。并且分配了一个唯一的UUID以供区分。

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

Inspector是nodejs 8之后引入的,如果是在nodejs 7之前,那么使用的是legacy debugger。

调试的安全性

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

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

默认情况下 --inspect 绑定的是127.0.0.1,这样就只允许本地程序访问。并且任何本地运行的程序都有权限进行该程序的调试。

如果我们真的想将debug程序暴露给外部程序的话,那么可以指明本机的外网IP地址或者0.0.0.0(表示任何地址,无限制),这样远程机子就可以进行远程调试了。

如果我们想进行安全的remote debug该怎么处理呢?

首先,我们要开启本地的debug:

node --inspect app.js

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

ssh -L 9221:localhost:9229 user@remote.example.com

这样我们就可以通过连接本地的9221端口,进行远程调试了。

使用WebStorm进行nodejs调试

JetBrains出品的WebStorm可谓是开发nodejs的利器,WebStorm自带有debug选项,如果开启该选项,则会在后台开启 --inspect:

怎么 调试nodejs程序

使用WebStorm来进行调试和使用IDEA来进行java程序调试类似,这里就不多介绍了。

使用Chrome devTools进行调试

使用Chrome devTools进行调试的前提是我们已经开启了 --inspect模式。

在chrome中输入chrome://inspect:

怎么 调试nodejs程序

我们可看到chrome inspect的界面,如果你本地已经有开启inspect的nodejs程序的话,在Remote Target中就可以直接看到。

选中你要调试的target,点击inspect,即可开启Chrome devTools调试工具:

怎么 调试nodejs程序

你可以对程序进行profile,也可以进行调试。

这里我们关注的是调试,所以转到source一栏,添加你要调试的程序的源代码:

怎么 调试nodejs程序

加入断点即可开始调试了。和在chrome中调试web端的js是一样的。

使用node-inspect来进行调试

其实nodejs有一个自带的调试工具,叫做node-inspect,这是一个cli的调试工具。我们看一下怎么使用。

我们直接使用:

node inspect app.js

< Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in app.js:1
> 1 const Koa = require('koa');
  2 const app = module.exports = new Koa();
  3 
debug>

node inspect 做了两件事情,第一件事情就是生成子程序去运行node --inspect app.js,第二件事情就是在主程序中运行CLI调试窗口。

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

1、Stepping

  • cont, c: 继续执行

  • next, n: Step到下一步

  • step, s: Step in

  • out, o: Step out

  • pause: 暂停运行的代码

2、Breakpoints

  • setBreakpoint(), sb(): 在当前行设置断点

  • setBreakpoint(line), sb(line): 在指定的行设置断点

  • setBreakpoint(‘fn()’), sb(…): 在指定的function中设置断点

  • setBreakpoint(‘script.js’, 1), sb(…): 在指定的脚本文件中设置断点

  • clearBreakpoint(‘script.js’, 1), cb(…): 从文件中清除断点

3、Information

  • backtrace, bt: 打印当前execution frame的backtrace信息

  • list(5): 列出源代码前后的5行

  • watch(expr): 添加监听表达式

  • unwatch(expr): 删除监听表达式

  • watchers: 列出所有的watchers

  • repl: 打开repl表达式

  • exec expr: 执行表达式

通过上面的命令,我们可以在CLI中进行比较复杂的调试活动。

其他的debug客户端

除了上面我们讲到的几个之外,我们还可以使用vscode,Visual Studio ,Eclipse IDE 等来进行nodejs的调试,这里就不一一详细介绍了。

上述内容就是怎么 调试nodejs程序,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么 调试nodejs程序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何调试nodejs程序

如何调试nodejs程序?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。开启nodejs的调试还记得之前我们讲到的koa程序吗?本文将会以一个简单的koa服务端程序为例,来展开n
2023-06-15

JavaScript程序怎么调试

本篇内容介绍了“JavaScript程序怎么调试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Chrome 开发人员工具:停止调试断点单步调
2023-06-27

nodejs怎么配置及调试

要配置和调试Node.js,你可以按照以下步骤进行操作:1. 安装Node.js:去Node.js官方网站下载Node.js的安装包,并按照安装向导进行安装。安装完成后,可以在命令行中输入`node -v`来验证Node.js是否成功安装。
2023-08-29

VSCode怎么调试Angular程序

这篇文章主要介绍VSCode怎么调试Angular程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vscode有什么用Visual Studio Code 是一个运行于 OS X,Windows和 Linux 之上
2023-06-14

windbg怎么调试delphi程序

要在Windbg中调试Delphi程序,可以按照以下步骤进行操作:打开Windbg,并选择“File” -> “Attach to a Process”(或者使用快捷键Ctrl+P)来附加到正在运行的Delphi程序进程。在弹出的对话框中,
2023-10-20

小程序怎么本地调试

这篇文章主要介绍“小程序怎么本地调试”,在日常操作中,相信很多人在小程序怎么本地调试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么本地调试”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!  首先,
2023-06-26

怎么使用Flex调试程序

这篇文章主要为大家展示了“怎么使用Flex调试程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用Flex调试程序”这篇文章吧。使用Flex调试程序如果Flex程序编译时报错,需要修改程序
2023-06-17

Eclipse中怎么调试Java程序

Eclipse中怎么调试Java程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第1条:不要调试太多一个关于调试的疯狂声明作为开头。但它必须是要说的!尝试切分一下你那复杂的逻
2023-06-17

c语言怎么调试程序

调试 c 程序需要以下步骤:1. 使用断点暂停执行;2. 打印语句输出变量值;3. 单步执行程序;4. 使用 gdb 查看高级调试信息;5. 检查内存错误;6. 仔细审查代码。如何调试 C 程序当 C 程序出现问题时,调试是找出错误并修复
c语言怎么调试程序
2024-05-15

Java怎么调试多线程的程序

调试多线程程序可以使用以下方法:使用断点:在代码中设置断点,当程序执行到断点时会暂停,可以查看当前线程的状态、变量的值等信息。可以通过在IDE中设置断点,或者使用Thread.currentThread().interrupt()在代码中暂
Java怎么调试多线程的程序
2024-02-29

小程序extAppid怎么开发调试

这篇文章主要介绍“小程序extAppid怎么开发调试”,在日常操作中,相信很多人在小程序extAppid怎么开发调试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序extAppid怎么开发调试”的疑惑有所
2023-06-26

linux中怎么使用gdb调试程序

在Linux中使用gdb调试程序,可以按照以下步骤进行操作:1. 在命令行中编译你的程序时,加上`-g`选项,以便生成调试信息。例如:`gcc -g myprogram.c -o myprogram`2. 打开终端,输入`gdb`命令,进入
2023-09-13

怎么使用eclipse进行程序调试

使用Eclipse进行程序调试的步骤如下:1. 在Eclipse中打开要调试的Java项目,并确保项目已经编译成功。2. 在代码中设置断点。在你希望程序停下来进行调试的地方,单击行号区域即可设置断点。断点会在行号处显示一个小蓝点。3. 单击
2023-09-13

Linux程序调试工具gdb怎么使用

这篇文章主要介绍“Linux程序调试工具gdb怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux程序调试工具gdb怎么使用”文章能帮助大家解决问题。gdb是GNU开源组织发布的一个强大
2023-06-27

用 ipdb 调试 Python 程序

==> 安装  pip install ipdb==> 使用    ---> python -m ipdb xxx.py  程序内部: from ipdb import set_traceset_trace()==> 常用命令ENTER(重
2023-01-31

在Linux中怎么使用gdb调试C程序

这篇文章主要为大家展示了“在Linux中怎么使用gdb调试C程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Linux中怎么使用gdb调试C程序”这篇文章吧。无论多么有经验的程序员,开发的任
2023-06-16

编程热搜

目录