学习NodeJS第三天:打造Nodejs的调试环境(中)

简介: 2012-12-07 因追加《学习 NodeJS 第三天:打造 Nodejs 的调试环境(下)》的缘故,特此将原来的《下》篇改为《中》篇,如标题所示。上一期我们为大家介绍了安装 Eclipse 调试插件的情况,这对于还不熟悉 Eclipse 开发平台的用户是至关重要的,希望可以通过一步步的图片加文字说明,把 Nodejs 困难的地方变简单和清晰、友好和轻松。

2012-12-07 因追加《学习 NodeJS 第三天:打造 Nodejs 的调试环境(下)》的缘故,特此将原来的《下》篇改为《中》篇,如标题所示。

上一期我们为大家介绍了安装 Eclipse 调试插件的情况,这对于还不熟悉 Eclipse 开发平台的用户是至关重要的,希望可以通过一步步的图片加文字说明,把 Nodejs 困难的地方变简单和清晰、友好和轻松。

现在正式进入要调试程序肯定要有调试代码。下面就是我们第一个测试的代码,很小的行数:

该段代码是最简单清晰不过的了,就是通过一个 count 的累加器不断地让 nodejs 运行作累加。怎么运行这段代码?呵呵,如果尚未清楚如何执行一个最简单的 nodejs 的话还是在这里交待一下:在 CMD 命令行键入(须当前nodejs目录下)nodejs dbgtest.js。nodejs.exe 的参数是 javascript 的源码文件。但是因为现在我们是调试的情景,必须加上“--debug”的参数打开调试的接口,即 node –debug <文件名>。另外,nodejs 还支持 --debug-brk 的参数,下文再讲。

输入命令 nodejs -- debug dbgtest.js 后运行的截图如下:

如图则是成功运行 nodejs 的情况,正常情况下不断累加计数器(count++)。本身是 console 输出的地方,通过观察 console 的提示,我们可以看到 nodejs 内部已经在内容打开 5858 的端口等待远程调试器,此刻我们接着要做的就是运行 Eclipse(进入 Debug View),两者一起配合调试的工作,——这就是“远程”而非本地调试的含义。怎么看是否在 Debug 的视图(View)下呢?留意一下debugView是否被选中即可,在 Eclipse 的右上角。

进入下一步的讲述之前,笔者觉得有必要加入一个小插曲,就是提及一下 nodejs 所支持的调试命令(Thanks to Nodejs sys对象),列举如下:

  • sys.debug() 同步打印,调试的时候很有用
  • sys.log() 带时间的输出信息
  • sys.error() 输出信息
  • sys.inspect(object, showHidden, depth)  显示一个对象的所有描述,如果 showHidden 为 false 时,只显示名称,没有省略。Depth 指定隔多长时间去递归对象,默认是两次
  • sys.puts() 类似与 document.writeln(),在屏幕上打印,在末尾添加换行
  • sys.print() 类似与 document.write(),在屏幕上打印,没有换行

用户测试一下各个方法,很容易了解其用途。例如 sys.puts(sys.inspect(sys,false,null)); ,结果如下:

再回到 Eclipse 调试视图中。如下图所示即表明链接 nodejs 成功,可以进行相关的调试工作。

切换至 Project Explorer 标签页,这里列出了所有的 require() 包文件和n odejs.exe <文件名>所指定的主程序文件,都是 JavaScript(*.js)文件。

files

我们双击打开程序文件 dbgtest.js,即可打开源码:

source

在行数上方双击那一行,就是一个打点的工作(breakpoint),程序随即被挂起,暂停工作,调试器中显示当地变量等的信息供用户观察与进一步应用。如图我们在第8行打了一个点:

breakpoint

首次使用 Eclipse 的调试界面感觉可能有些别扭,这没有关系。如果不太习惯,使用多几次就好。调试的基本内容大抵是那几回事。例如,你可以步进跟踪代码(step into,快捷键 F5,但注意一点,对于步进 require 可能会 crash 挂掉,这也是情有可原的,require() 是加载包的特殊方法)。下图则是调出 watch 的功能。

watch

当然,通过在 js 源码中加入 debugger 的关键字来打点也是支持的(debugger 非常有用的关键字!)。


恢复 nodejs 程序的运行,就要按play 绿色的箭头来恢复,快捷键是 F8(现在处于暂停所以中间的按钮是灰色的)红色按钮就是断开链接。另外如果至于如何关闭 nodejs 进程?据作者惯用的方式,就是在 DOS/win 的命令行下 ctrl+c 强行退出即可。

前面不是说到 nodejs --debug-brk 另外一个的参数吗?究竟有何作用? --debug-brk 也是调试的命令,只是在一开始时就是挂起 nodejs 程序不运行,等待调试器通知才运行。——明显与 --debug 边运行代码边监听调试的不同。为了避免过多的钻“牛角尖”,还是让用户们自己来试试这个参数吧:)

前面说到调试界面不以独立的 C/C++ 程序提供,其实一方面可以很轻松地嫁接这个调试模块的到 C/C++ 项目中。因为属于高级话题的部分,限水平和能力的缘故就不展开讨论了(可留意一下 ry 原文)。

结语:有了 V8 和 Eclispe 远程调试的可靠保障,nodejs 的发展会越来越走向成熟,——最后,让我们投入到美丽的 SSJS (Server Side JavaScript)世界中去吧!

目录
相关文章
|
JavaScript 前端开发 开发者
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
301 2
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
10月前
|
人工智能 监控 JavaScript
HarmonyOS5云服务技术分享--ArkTS开发Node环境
本文详细讲解了在HarmonyOS(ArkTS API 9及以上)中使用云函数的开发技巧,结合Node.js和HTTP触发器,从零开始手把手教学。内容涵盖核心能力、开发流程(配置到部署)、高阶优化及常见问题解决,并提供实际应用场景示例。助你快速掌握Serverless开发,提升效率,探索跨端协作与AI集成等未来方向。
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
788 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
12月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
JavaScript
node环境之Error: Cannot find module ‘chalk’ 报错无法解决的问题—-网上说让你npm install chalk 基本是没有用的-优雅草央千澈解决方案
node环境之Error: Cannot find module ‘chalk’ 报错无法解决的问题—-网上说让你npm install chalk 基本是没有用的-优雅草央千澈解决方案
1036 13
node环境之Error: Cannot find module ‘chalk’ 报错无法解决的问题—-网上说让你npm install chalk 基本是没有用的-优雅草央千澈解决方案
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
423 3
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
261 8
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)
本文介绍了Twaver HTML5中的拓扑元素(Element),包括网元(Element)、节点(Node)和连线(Link)的基本概念和使用方法。文章详细解释了Element的属性和方法,并通过示例代码展示了如何在React组件中创建节点、设置节点属性和样式。
382 1
Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)