node内置调试方法总结

自从node6.3以来,node已经直接支持类似node-inpect的功能,只要对执行的js代码加入一个--inspect参数,即可使用chrome做代码调试。

本文使用如下工具:

  • node v9.5.0
  • chrome 64

首先准备待调试代码。如果这是为了学习的目的,可以使用我测试用代码为:

var objectRegExp = /^\[object (\S+)\]$/;
function gettype(obj) {
 var type = typeof obj;
 if (type !== 'object') {
  return type;
 }
 // inspect [[Class]] for objects
 return toString.call(obj)
  .replace(objectRegExp, '$1');
}
gettype({})
gettype(function(){})

然后运行此代码,加上参数--inspect-brk

node --inspect-brk a.js

系统提示:

Debugger listening on ws://127.0.0.1:9229/84960765-5abc-4236-a7c6-924f99c34ed7

打开浏览器,在地址栏内输入:

chrome://inspect/#devices

可以看到:

Remote Target
#LOCALHOST
Target (v9.5.0)
a.js
file:///Users/lcj/Documents/github/express/a.js
inspect

点击最后一行inspect,即可弹出一个新的窗口,此为调试器。并且调入代码到chrome调试器内,在执行命令的控制台上可以看到:

Debugger attached.

现在,可以使用点击调试器内的Run | Step | Step Into等按钮做调试了。

对于没有直接使用node执行的代码,比如测试用例mocha,怎么办?mocha也是支持这些选项的,比如express使用了mocha做单元测试,可以用如下命名来做调试:

mocha --require test/support/env --reporter spec --bail --check-leaks --no-exit test/app.router.js --inspect-brk -g 'should decode correct params

(0)

相关推荐

  • node内置调试方法总结

    自从node6.3以来,node已经直接支持类似node-inpect的功能,只要对执行的js代码加入一个--inspect参数,即可使用chrome做代码调试. 本文使用如下工具: node v9.5.0 chrome 64 首先准备待调试代码.如果这是为了学习的目的,可以使用我测试用代码为: var objectRegExp = /^\[object (\S+)\]$/; function gettype(obj) { var type = typeof obj; if (type !==

  • Node.js 深度调试方法解析

    在 Node.js 项目开发过程中,随着项目的发展,调用关系越来越复杂,调试工具的重要性日益凸显. Node(v6.3+)集成了方便好用 V8 Inspect 调试器,允许我们通过 Chrome DevTools 进行图形化的调试和性能分析.同时,我们也可以使用 VS Code,Webstorm 等支持的编辑器对 Node.js 程序进行调试. Node Inspect 要想启动调试器,我们需要在启动 Node.js 应用程序时传入 --inspect 标志,也可以使用该标志提供自定义的端口,例

  • Python 的内置字符串方法小结

    字符串处理是非常常用的技能,但 Python 内置字符串方法太多,常常遗忘,为了便于快速参考,特地依据 Python 3.5.1 给每个内置方法写了示例并进行了归类,便于大家索引. PS: 可以点击概览内的绿色标题进入相应分类或者通过右侧边栏文章目录快速索引相应方法. 大小写转换 str.capitalize() 将首字母转换成大写,需要注意的是如果首字没有大写形式,则返回原字符串. 'adi dog'.capitalize() # 'Adi dog' 'abcd 徐'.capitalize()

  • 浅谈JS数组内置遍历方法有哪些和区别

    目录 forEach()(ES6)方法 map()(ES6) 方法 flatMap()方法 for...in... for...of... filter(ES6)遍历数组 every()函数(ES6) find()函数(ES6) findIndex()函数 (ES6) forEach()(ES6)方法 forEach()(ES6)方法对数组的每个元素执行一次给定的函数. 1. 数组里的元素个数有几个,该方法里的回调就会执行几次     2. 第一个参数是数组里的元素,第二个参数为数组里元素的索引

  • Express框架两个内置中间件方法详解

    目录 什么是中间件 两个内置的中间件 init 方法 query 中间件 被使用 小结 什么是中间件 中间件,就是具有串联执行能力的函数,Express中两种层面的中间件.app 层面的中间件, router 层面的中甲件.在 express 中, 一般通过 use 方法和路由的方法添加中间件. 两个内置的中间件 init 中间件方法 query 中间件方法 init 方法 exports.init = function(app){ return function expressInit(req

  • Django框架使用内置方法实现登录功能详解

    本文实例讲述了Django框架使用内置方法实现登录功能.分享给大家供大家参考,具体如下: 一 内置登录退出思维导图 二 Django内置登录方法 1 位置 2 源码 @deprecate_current_app @sensitive_post_parameters() @csrf_protect @never_cache # 视图函数要渲染的模板位置(registration/login.html) def login(request, template_name='registration/l

  • Python内置方法实现字符串的秘钥加解密(推荐)

    在实际编程开发中,我们会使用到各类的加密算法来对数据和信息进行加密.比如密码中比较常见的MD5加密,以及AES加密等等. 对于密码认证来说,MD5加密是比较适合的,因为其不需要接触到明文的数据,只需要比对MD5加密后的哈希值就能判断数据是否一致:而对于一些在加密后进行解密的数据而言,AES则更加的常用. 在Python中实现AES算法需要借助的第三方库Crypto,其在各个操作系统上的安装方法有些许复杂,所以对于简单的使用有点杀鸡用牛刀的意思.在Mrdoc的开发过程中,我们就遇到了这样的问题.一

  • Spring Security内置过滤器的维护方法

    目录 内置过滤器的顺序 注册过滤器的逻辑 获取已注册过滤器的顺序值 HttpSecurity维护过滤器的方法 addFilterAtOffsetOf addFilter系列方法 问题来了 Spring Security中的内置过滤器顺序是怎么维护的?我想很多开发者都对这个问题感兴趣.本篇我和大家一起探讨下这个问题. HttpSecurity包含了一个成员变量FilterOrderRegistration,这个类是一个内置过滤器注册表.至于这些过滤器的作用,不是本文介绍的重点,有兴趣可以去看看Fi

  • Python中的内置函数isdigit()

    目录 Python内置函数isdigit()使用 示例一:判断单个字符是否为数字 示例二:判断字符串中是否仅含有数字 Python字符串内置函数 Python内置函数isdigit()使用 今天简单介绍一下Python中的isdigit()函数的用法: 判断单个字符是否为数字 判断字符串中是否仅含有数字 示例一:判断单个字符是否为数字 char1 = '1' print(char1.isdigit()) char2 = 'a' print(char2.isdigit()) ""&quo

  • 用内置变量调试shell脚本的方法

    一般的shell脚本的调试基本都是echo 来处理遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了.其实shell内置的一些变量可以很好的解决这个问题: $LINENO  $FUNCNAME $BASH_LINENO 这几个变量记录了脚本当前的执行位置,以及正在执行的函数.具体可以可以man 文档页. 实例代码:a.sh 复制代码 代码如下: #!/bin/bash abc() {echo "wo shi abc()" echo  "func:

随机推荐