首页 » Web前端 » phpcli模式debug技巧_nodejs的调试debug

phpcli模式debug技巧_nodejs的调试debug

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

本日我们来详细先容一下如何调试nodejs程序。

开启nodejs的调试

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

phpcli模式debug技巧_nodejs的调试debug

先看下一个大略的koa做事app.js:

phpcli模式debug技巧_nodejs的调试debug
(图片来自网络侵删)

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-d0f7ebceab5aFor 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:

利用WebStorm来进行调试和利用IDEA来进行java程序调试类似,这里就不多先容了。

利用Chrome devTools进行调试

利用Chrome devTools进行调试的条件是我们已经开启了 –inspect模式。

在chrome中输入chrome://inspect:

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

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

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

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

加入断点即可开始调试了。
和在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调试程序为我们供应了一些非常有用的命令:

Steppingcont, c: 连续实行next, n: Step到下一步step, s: Step inout, o: Step outpause: 停息运行的代码BreakpointssetBreakpoint(), sb(): 在当前行设置断点setBreakpoint(line), sb(line): 在指定的行设置断点setBreakpoint(‘fn()’), sb(…): 在指定的function中设置断点setBreakpoint(‘script.js’, 1), sb(…): 在指定的脚本文件中设置断点clearBreakpoint(‘script.js’, 1), cb(…): 从文件中打消断点Informationbacktrace, bt: 打印当前execution frame的backtrace信息list(5): 列出源代码前后的5行watch(expr): 添加监听表达式unwatch(expr): 删除监听表达式watchers: 列出所有的watchersrepl: 打开repl表达式exec expr: 实行表达式

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

其他的debug客户端

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

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

本文作者:flydean程序那些事

本文链接:http://www.flydean.com/nodejs-debug/

本文来源:flydean的博客

欢迎关注我的公众号:「程序那些事」最普通的解读,最深刻的干货,最简洁的教程,浩瀚你不知道的小技巧等你来创造!

标签:

相关文章

下phppdo技巧_PHP PDO 简单教程

PHP 5.5 版本之前,我们有用于访问 MySQL 数据库的 mysql_ 命令,但由于安全性不敷,它们终极被弃用。mysql_...

Web前端 2024-12-09 阅读0 评论0