怎么设置VS Code的nodejs debug模块的debug

使用node-inspector调试NodeJS代码_Linux编程_Linux公社-Linux系统门户网站
你好,游客
使用node-inspector调试NodeJS代码
来源:Linux社区&
作者:SolidMango
任何一门完备的语言技术栈都少不了健壮的调试工具,对于NodeJS平台同样如此,笔者研究了几种调试NodeJS代码的方式,通过对比,还是觉得node-inspector的调试方式比较方便,而且和前端JavaScript代码的调试具有一致的体验,不仅健壮,而且方便。安装完成NodeJS后执行如下指令可以完成node-inspector安装。
&npm install -g node-inspector
node-inspector安装完成以后运行如下指令启动node-inspector。
编辑NodeJS源代码输入如下代码,并将其命名为test.js
& & var duck = {& & & & duckSinging: function(){& & & & & & console.log( '嘎嘎嘎' );& & & & }& & };
& & var chicken = {& & & & duckSinging: function(){& & & & & & console.log( '嘎嘎嘎' );& & & & }& & };
& & var choir = []; // 合唱团& & var joinChoir = function( animal ){& & & & if ( animal && typeof animal.duckSinging === 'function' ){& & & & & & choir.push( animal );& & & & & & console.log( '恭喜加入合唱团' );& & & & & & console.log( '合唱团已有成员数量:' + choir.length );& & & & }& & };
& & joinChoir( duck ); & & joinChoir( chicken );
到test.js文件所在的路径下执行如下指令:
&node --debug-brk test.js
打开Chrome浏览器输入node-inspector提示的地址,就会发现断点已经命中在test.js代码的第一行,至此,我们已经可以单步执行或者全速执行我们的NodeJS代码了,效果图如下,当然我们也可以先设置好断点,然后以node --debug test.js 启动被调试NodeJS代码,并进行调试。
本文完整的总结了使用node-inspector调试NodeJS代码的完整步骤,并配了相关步骤的详细图解,希望对大家有所帮助。值得一提的是使用node-inspector调试NodeJS代码有一个需要注意的地方就是在我们调试集群或者多进程NodeJS代码的时候,我们只能调试打开调试端口的那个进程,如果需要调试其他子进程,就需要找到子进程的监听端口,并挂载浏览器到相应的端口上完成调试工作。
本文永久更新链接地址:
相关资讯 & & &
& (12/13/:09)
& (01/22/:01)
& (12/27/:43)
& (12/13/:28)
& (07/29/:08)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款谈到node断点调试,目前主要有三种方式,通过`node内置调试工具`、`通过IDE(如vscode)`、`通过node-inspector`,三者本质上差不多。本文着重点在于介绍 **如何在本地通过node-inspector 调试远程服务器上的node代码**。
谈到node断点调试,目前主要有三种方式,通过node内置调试工具、通过IDE(如vscode)、通过node-inspector,三者本质上差不多。本文着重点在于介绍 如何在本地通过node-inspector 调试远程服务器上的node代码。
在进入主题之前,首先会对三种调试方式进行入门讲解,方便新手理解后面的内容。至于老司机们,可以直接跳到主题去。
方式一:内置debug功能
进入调试模式(在第1行断点)
node debug app.js
进入调试模式(在第n行断点)
比如要在第3行断点。
方式一:通过debugger
方式二:通过sb(line)。
执行下一步
通过next命令。
跳到下一个断点
通过cont命令。
查看某个变量的值
输入repl命令后,再次输入变量名,就可以看到变量对应的值。如果想继续执行代码,可以按ctrl+c退出。
添加/删除watch
通过watch(expr)来添加监视对象。
通过watchers查看当前所有的监视对象。
通过unwatch(expr)来删除监视对象。
添加watch:
删除watch:
进入/跳出函数(step in、step out)
进入函数:通过step或者s。
跳出函数:通过out或者o。
示例代码如下,假设代码运行到logger(str);这一行,首先跳进函数内部,再跳出函数。
var nick = 'chyingp';
var country = 'China';
var str = nick + ' live in ' +
var logger = function(msg){
console.log(msg); // 这里
console.log('这行会跳过'); // 跳过这行
logger(str);
// 假设运行到这里,想要进入logger方法
console.log(str);
示例截图如下:
多个文件断点
通过setBreakpoint('script.js', 1), sb(...),在某个文件某一行添加断点。反正我是没成功过。。。怎么看都是bug。。。
每次都退出然后node debug app.js相当烦。直接用restart
比如远程机器ip是192.168.1.126,在远程机器上进入调试模式
[root@localhost ex]# node --debug-brk app.js
Debugger listening on port 5858
然后,在本地机器通过node debug 192.168.1.126:5858连接远程机器进行调试。
node debug 192.168.1.126:5858
/tmp node debug 192.168.1.126:5858
connecting to 192.168.1.126:5858 ... ok
break in /tmp/ex/app.js:1
& 1 var Logger = require('./logger');
('hello');
break in /tmp/ex/app.js:3
1 var Logger = require('./logger');
& ('hello');
当然,还可以通过pid进行远程调试,这里就不举例。
方式二:通过IDE(vscode)
首先,在vscode里打开项目
然后,添加调试配置。主要需要修改的是可执行文件的路径。
点击代码左侧添加断点。
顺利断点,左侧的变量、监视对象,右侧的调试工具栏,用过chrome dev tool的同学应该很熟悉,不赘述。
方式三:通过node-inspector
首先,安装node-inspector。
npm install -g node-inspector
方式一:通过node-debug启动调试
启动调试,它会自动帮你在浏览器里打开调试界面。
debugger git:(master)
node-debug app.js
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
Debugging `app.js`
Debugger listening on port 5858
调试界面如下,简直不能更亲切。
方式二:更加灵活的方式
步骤1:通过node-inspector启动Node Inspector Server
debugger git:(master)
node-inspector
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
步骤2:通过传统方式启动调试。加入--debug-brk,好让代码在第一行断住。
debugger git:(master)
node --debug-brk app.js
Debugger listening on port 5858
步骤3:在浏览器里打开调试UI界面。就是步骤1里打印出来的地址
从上面的例子不难猜想到。(不负责任猜想)
通过node --debug-brk启动调试,监听5858端口。
node-inspector启动服务,监听8080端口。
在浏览器里访问http://127.0.0.1:8080/?port=5858。可以看到port=5858这个参数。结合之前讲到的node内置远程调试的功能,可以猜想,在返回UI调试界面的同时,服务内部通过5858端口开始了断点调试。
另外,从下面截图可以看出,UI调试工具(其实是个网页)跟 inspector服务 之间通过websocket进行通信。
用户在界面上操作时,比如设置断点,就向 inspector服务 发送一条消息,inspector服务 在内部通过v8调试器来实现代码的断点。
可以看到,用到了v8-debug,这个就待深挖了。
通过node-inspector调试远程代码
细心的同学可能会发现,node远程调试其实在上面node-inspector章节的讲解里已经覆盖到了。这里还是来个实际的例子。
假设我们的node代码app.js运行在阿里云的服务器上,服务器ip是xxx.xxx.xxx.xxx。
首先,服务器上启动node-inspector服务
[root@iZ94wb7tioqZ ~]# node-inspector
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
其次,通过--debug-brk参数,进入调试模式
[root@iZ94wb7tioqZ ex]# node --debug-brk app.js
Debugger listening on port 5858
最后,在本地通过ip地址愉快的访问调试界面。是不是很简单捏。
常见问题:安全限制
远程调试常见的问题就是请求被拒绝。这是服务器安全策略的限制。遇到这种情况,开放端口就完事了。
在我们的云主机上,默认安装了firewall-cmd,可以通过--add-port选项来开放8080端口的开放。如果本机没有安装firewall-cmd,也可以通过iptables来实现同样的功能。
[root@iZ94wb7tioqZ ex]# firewall-cmd --add-port=8080/tcp
然后,就可以愉快的远程调试了。
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@ 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】数据库技术天团集体亮相,分享一线生产实践经验,告诉你踩过的坑、走过的路,都是老司机,靠谱!干货分享,不可错过!&&
由轻量级Agent和云端组成,集云盾威胁情报于一体,通过Agent和云端大数据的联动,为您提供网站后门查杀、通用...
服务底层使用经国家密码管理局检测认证的硬件密码机,通过虚拟化技术,帮助用户满足数据安全方面的监管合规要求,保护云...
在云上签发Symantec、WoSign、CFCA证书,实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
2017杭州云栖大会火热抢票
Loading...下次自动登录
现在的位置:
& 综合 & 正文
VS2010编译IDE调试node.js
一、编译过程倒是比较顺利:
1. nodejs.org下载source code并解压
2. 运行"visual studio 2010命令提示", 加上python的运行路径例如"c:\Python27", cd到对应node目录运行vcbuild.bat:
"vcbuild DEBUG x86" 或"vcbuild DEBUG x64"
不是调试就用 RELEASE咯, 等待, 一堆warnings, 搞定.
二、用IDE调试运行时, 碰到如下错误:
1. build的时候 c1xx : fatal error C1083: Cannot open source file: '...v8\build\Debug\\obj\global_intermediate\libraries.cc': No such file or directory
* 没有把python目录加到path中: 我的电脑右键属性-&高级系统设置-&环境变量-&编辑PATH
* 没有checkout正确的cygwin或者没有把"third_party\cygwin"目录放置正确(third_party应该和v8的src目录同级), 参照上一篇文件如果checkout cygwin
http://blog.csdn.net/edguo/article/details/9747955
2. 启动调试的时候, 无法启动程序“...\Debug\lib\cares.lib”, 指定的文件的格式无法识别或为不支持的二进制
* 在解决方案资源管理器右键根节点, 属性, 设定单启动项目为要调试的exe, 就是node
&&&&推荐文章:
【上篇】【下篇】本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 nodejs debug 的文章

 

随机推荐