`
MyEyeOfJava
  • 浏览: 1156678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71342
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

[Nodejs]调式技术总结

阅读更多

欲善其功,必先利其器--Nodejs调试技术总结

调试技术与开发技术构成了软件开发的基石。目前Nodejs作为新型的Web Server开发栈倍受开发者关注。总的来说Nodejs的应用程序主要有两部分:JavaScript编写的js模块和C语言编译的二进制模块。这里主 要介绍三种avaScript模块的调试方法:基于Nodejs内建的调试器,基于V8调试插件和基于Chrome浏览器的调试器。以下所有的操作都将基 于如下代码(example.js):

复制代码
var
 http = require('http');
var
 url = require('url');
http.createServer(function
 (req, res) {
        var
 path = url.parse(req.url).pathname;
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end(path);
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
复制代码

 

1. 基于Nodejs内建的调试器

Nodejs提供了一个内建调试器来帮助开发者调试应用程序。想要开启调试器我们需要在代码中加入debugger标签,当Nodejs执行到debugger标签时会自动暂停(debugger标签相当于在代码中开启一个断点)。代码如下:

var
 path = url.parse(req.url).pathname;
debugger
;

res.writeHead(200, {'Content-Type': 'text/plain'});

执行命令:node debug example.js 就可以进入调试模式。

在debug模式下,可以使用内建命令如repl去评估变量和表达式的值(如2所示)。我们也可以通过help命令来获取完整的调试命令列表。

Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version

 

2. 基于V8插件的调试器
Nodejs是基于google V8的引擎上构建的,Google为Eclipse提供了一个对应的调试插件。关于如何在Eclipse中安装和调试Nodejs程序就不再重复描述了, 网上已经有很多的文章了(具体可以参考这篇文章http://cnodejs.org/blog/?p=911)。唯一要注意的是在默认情况下V8引擎支 持的调试模式是本地模式。如果想要开启远程调试的话,我们需要修改Nodejs中的V8源文件:/deps/v8/src/platform- posix.cc

  addr.sin_family = AF_INET;
  addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK
); --> INADDR_ANY

  addr.sin_port = htons(port);

然后重新编译Nodejs。

提示:

用插件来调试nodejs程序,你有时候会遇到什么connect refuse, get version failed等等错误。那么请注意你使用的ip的地址, 一般下127.0.0.1的回环地址是都工作的。如果你使用真实的ip地址,请检查防火墙设置。

 

3. 基于Chrome浏览器的调试器

既然我们可以通过V8的调试插件来调试,那是否也可以借用Chrome浏览器的JavaScript调试器来调试呢?node-inspector模块提供了这样一种可能。我们需要先通过npm来安装node-inspector

npm install -g node-inspector  // -g 导入安装路径到环境变量

node-inspector是通过websocket方式来转向debug输入输出的。因此,我们在调试前要先启动node-inspector来监听Nodejs的debug调试端口。

默认情况下node-inspector的端口是8080,可以通过参数--web-port=[port]来设置端口。在启动node- inpspector之后,我们可以通过--debug或--debug-brk来启动nodejs程序。通过在浏览器输入http://[ip address]:8080/debug?port=5858,我们会得到如下的调试窗口:

 这三种方法各自有优缺点,我个人比较欣赏node-inspector的方式。

 

 

原文地址:http://www.cnblogs.com/moonz-wu/archive/2012/01/15/2322120.html

分享到:
评论

相关推荐

    基于NodeJS的智能家居语音控制系统服务器端设计与实现.pdf

    总结来说,NodeJS因其轻量级、高并发和非阻塞I/O等优点,非常适合用于智能家居语音控制系统的服务器端开发。通过利用NodeJS的这些特性,可以构建出响应快速、稳定可靠的智能家居语音控制系统。随着智能家居和物联网...

    nodejs async异步常用函数总结(推荐)

    在Node.js中,异步编程是核心概念之一,其主要通过回调函数、事件、Promises以及async/await等技术实现。 在Node.js的异步编程中,async库是一个非常流行的工具,它提供了一系列的函数来简化异步操作的控制流程。...

    nodejs模块学习之connect解析

    Node.js的Connect模块是构建web应用的一个轻量级框架,它是Express.js的前身,对于理解Express的...通过分析源码和实践使用,我们可以深入理解Connect的工作原理,这对提升我们的技术水平和解决问题的能力大有裨益。

    NodeJs:NodeJs 练习

    这一创新性技术的出现打破了 JavaScript 仅限于浏览器运行的传统,为前端开发者提供了一个全栈式开发的平台,实现了从前端到后端的无缝对接。 ### 1. 非阻塞 I/O 模型 Node.js 最大的特点之一是其非阻塞 I/O 模型...

    Node.js-使用隐藏的iframe观察元素大小更改

    总结来说,使用隐藏的`iframe`观察元素大小更改是一种巧妙的技术,尤其适用于那些需要实时响应元素尺寸变化的场景,如自适应布局、响应式设计或复杂的用户界面交互。`developit-simple-element-resize-detector`这样...

    Node.js调试技术总结分享

    Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于... 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

    restcomm-sdk-node:用于RestComm REST API的NodeJS SDK

    Restcomm SDK for NodeJS是为开发者提供的一种工具,它使得在Node.js环境中与Restcomm的REST API进行交互变得更加简单和高效。Restcomm是一款强大的通信平台,支持VoIP、消息传递和多媒体服务,允许开发者构建丰富的...

    giphyBot:一个不和谐的机器人,用于提供在nodejs中制作的giphy gif(很快切换到deno)

    总结,giphyBot 项目展示了如何利用Node.js和Discord API构建一个交互式的聊天机器人,同时计划向Deno的迁移也体现了对新技术的探索和适应。通过理解这些技术点,开发者可以构建出更多有趣且实用的应用。

    GameRecord:创建角色内战记录站点

    总结来说,“GameRecord: 创建角色内战记录站点”是一个使用现代Web技术栈构建的游戏战斗记录平台,结合了Node.js的服务器能力、ES6的代码优势和EJS的动态渲染功能,为玩家提供了一个记录和查看战斗历程的便捷途径。

    CoinWrapper:后端api的代号-必须更改

    本篇文章将深入探讨“CoinWrapper”这一后端API的代号,以及为什么我们需要对其进行更改,并结合Node.js、JavaScript等技术,分析如何优化和扩展这个API,以满足不断变化的加密货币交易需求。 首先,我们要理解...

Global site tag (gtag.js) - Google Analytics