前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Node.js源码学习——搭建阅读调试代码环境

Node.js源码学习——搭建阅读调试代码环境

原创
作者头像
Runhwguo
修改于 2020-03-19 08:26:21
修改于 2020-03-19 08:26:21
3.1K0
举报

前提条件

源码学习,是要建立在一定基础上的,就Node.js而言,要满足一下条件:

  • 熟悉JavaScript语言
  • 熟练Node.js服务端开发
  • 熟悉C++语言
  • 熟悉JS/C++调试

搭建步骤

如果满足以上条件,那么我们就开始本系列的第一章,搭建环境;

1. 下载Node.js的github项目

  • 阅读Node.js的README.md
  • 初步弄清楚每个目录的文件作用

2. 搭建阅读/调试环境

  • 阅读BUILDING.md,编译Debug版的Node执行文件
  • 选择JS/C++的IDE,笔者选择CLion(C++),WebStorm(JS)
  • 配置调试参数

3. 阅读&调试

具体实施

声明下笔者的环境,Mac(10.14.6) CLion WebStorm(其他平台Node.js文档里也有介绍)

1. 下载Node.js源码 git clone https://github.com/nodejs/node.git‘

2. 根据BUILDING.md编译Debug的Node执行文件

  • cd node_project
  • ./configure --debug
  • make -j4

此时Node执行文件已经构建出来,out/Debug/node

注意点:编译Node.js源码比较耗资源,笔者的Mac呼呼作响,且需要足够的磁盘空间,笔者就遇到空间不足失败的情况,建议留有20G左右的空间;

空间不足,构建失败
空间不足,构建失败

Node.js编译产物截图:

Node.js构建产物截图
Node.js构建产物截图

3. 配置IDE

这里看个人喜好,VSCode/Xcode/VS/Chrome/CLion/WebStorm都是可以用来调试了,而笔者是Jetbrains的铁粉,所以这里就用CLion/WebStorm来做演示,但要做到把原理说明白;

1. CLion调试C++

在*unix下,Node.js是用make来构建的,但是CLion是使用CMake来构建调试C++的,CLion可以根据代码目录自动生成CMakeLists.txt,以供调试;

在CLion里,用New CMake Project from Sources导入项目,会自动生成CMakeLists.txt;

CLion自动生成的CMakeLists.txt
CLion自动生成的CMakeLists.txt

这里在Edit Configurations,选择CMake Application

  • Target选择node_master
  • Executable选择我们刚编出来的Debug版Node
  • Program arguments填--inspect-brk ./demo.js,--inpect-brk是在应用代码的第一行断开;这里配置对应的命令行就是node --inspect-brk /User/run/project/node_source_learn/demo.js
  • 清空Before launch里的内容,因为我们的Node已经编译好了,不用再编译了;
CLion调试配置
CLion调试配置

2. WebStorm调试JS(官网介绍)

在WebStorm里,新建一个目录,新建demo.js,用来调试JS代码;

这里在Edit Configurations,选择Attach to Node.js/Chrome

  • Host填localhost
  • Port填9229,因为--inspect-brk默认监听9229端口,将Reconnect automatically打钩
WebStorm调试配置
WebStorm调试配置

4. 调试时,把CLion和WebStorm都启动调试

C++断点:

C++调试截图
C++调试截图

JS断点:

JS调试截图
JS调试截图

至此,Node.js的C++/JS混合阅读调试环境搭建完毕;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node.js 调试一路走来经历了什么
做为前端开发,想必大家都写过 Node.js 的代码,也大概率用 debugger 断点调试过。
神说要有光zxg
2022/06/06
6490
Node.js 调试一路走来经历了什么
Linux C/C++ 编程环境搭建
GCC:默认将.c文件视为C程序,.cpp文件需手动指定为C++(如gcc -xc++);默认链接C标准库(libc),编译C++程序需手动添加-lstdc++参数。‌
麦克马
2025/05/07
1970
Linux C/C++ 编程环境搭建
vscode调试Node.js指南
前言:调试代码不管对于开发还是学习源码都是非常重要的技能,本文简单介绍vscode调试Node.js相关代码的调试技巧。
theanarkh
2021/09/16
5.7K0
vscode调试Node.js指南
使用 Chrome Devtools 调试您的 Node.js 程序
俗话说:“工欲善其事,必先利其器”,调试是每一个开发人员都要遇到的问题,选择一个合适的调试工具也尤为重要。 在 Node.js 开发过程中除了万能的 console.log 之外,本节介绍一个 Node.js 与 Chrome Devtools 结合的调试工具,以后你可以选择使用浏览器来调试 Node.js 应用程序了。
五月君
2020/12/30
3.3K0
使用 Chrome Devtools 调试您的 Node.js 程序
【点滴】用 Chrome DevTools 调试 Node.js
从 v 6.3.0 开始,可以用 Chrome Developer Tools 调试 Node.js。以下是操作步骤:
疯狂的技术宅
2021/03/16
3.6K0
Node 调试工具入门教程
JavaScript 程序越来越复杂,调试工具的重要性日益凸显。客户端脚本有浏览器,Node 脚本怎么调试呢? 2016年,Node 决定将 Chrome 浏览器的"开发者工具"作为官方的调试工具,使
ruanyf
2018/04/12
8710
Node 调试工具入门教程
CmakeList的编写和参数详解
在linux 下进行开发很多人选择编写makefile 文件进行项目环境搭建,而makefile 文件依赖关系复杂,工作量很大,搞的人头很大。采用自动化的项目构建工具cmake 可以将程序员从复杂的makefile 文件中解脱出来。cmake 根据内置的规则和语法来自动生成相关的makefile 文件进行编译,同时还支持静态库和动态库的构建,我把工作中用到的东东总结在此,方便忘记时随时查看,具体cmake的介绍和详细语法还是参考官方文档(http://www.cmake.org/),有一篇中文的cmake 实践 写的不错,可以google一下。
全栈程序员站长
2022/11/15
2.3K0
envoy vscode调试环境搭建
经过一周的反复折腾,终于能顺利 debug envoy 源码,中途踩了无数坑,在此记录一下。
kinnylee
2021/12/06
2.8K0
【保姆级】前端使用node.js基础教程
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,常用于服务器端编程。以下是一些 Node.js 中常用的命令:
肥晨
2024/03/22
2710
方便快捷的调试 Node.js 程序
在调试程序时总是会遇到各种挑战。Node.js 的异步工作流为这一艰巨的过程增加了额外的复杂性。尽管 V8 引擎为了方便访问异步栈跟踪进行了一些更新,但是在很多数情况下,我们只会在程序主线程上遇到错误,这使得调试有些困难。同样,当我们的 Node.js 程序崩溃时,通常需要依靠一些复杂的 CLI 工具来分析核心转储[1]。
疯狂的技术宅
2020/08/19
1.7K0
调试 node.js 程序
在程序开发中,如何快速的查找定位问题是一项非常重要的基本功。在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作。这里简单介绍下如何调试 node.js 程序。
用户6167509
2020/04/08
3.1K0
使用CEF(五)— 在QT中集成CEF(2)基于CLion与CMake搭建环境
在前文《使用CEF(四)— 在QT中集成CEF(1):基本集成》中,我们使用VS+QT的插件搭建了一个基于QT+CEF的项目。时过境迁,笔者目前用的最多的就是CLion+CMake搭建C/C项目,并且CLion提供了对C/C强大的开发环境。此外,也想将CMake搭建QT项目作为一次实践,故由此文。
w4ngzhen
2023/10/17
1.2K0
使用CEF(五)— 在QT中集成CEF(2)基于CLion与CMake搭建环境
Node.js命令介绍
Node.js是一个基于Chrome的V8引擎的JavaScript运行环境,它允许开发者在服务器端运行JavaScript代码。Node.js的强大之处在于其非阻塞I/O模型和事件驱动架构,使其轻量级且高效,尤其适用于数据密集型实时应用。在Node.js中,我们可以通过命令行工具来执行各种操作,下面我将介绍一些常用的Node.js命令。
china马斯克
2024/07/27
1640
Android NDK 开发 | CMake 使用手册 - 初见篇
之前写过一篇 《[-NDK 导引篇 -] 在NDK开发之前你应知道的东西》 介绍了在进入 NDK 学习之前,如何摆正自己的角色。时隔两年,NDK 系列文章开始填坑,在上一篇 《 NDK 是什么 | FFmpeg 5.0 编译 so 库》 中,介绍了 NDK 的概念,以及其作用。
张风捷特烈
2022/09/20
1.4K0
Android NDK 开发 | CMake 使用手册 - 初见篇
为你揭开 node.js 调试面纱
最近在写公司内部的一个 node 应用的时候,发现自己在 node 调试这块还是比较薄弱的,特意恶补了一下,在这里也做一下分享。
coder_koala
2019/12/06
1.2K0
为你揭开 node.js 调试面纱
Node.js 项目调试指南
Node.js 是一种流行的 JavaScript 运行时,与谷歌 Chrome 浏览器使用相同的 V8 引擎。它是跨平台的,在创建 Web 服务器、构建工具、命令行工具等方面越来越受欢迎。
ConardLi
2023/08/23
9730
Node.js 项目调试指南
2019-01-16 Ubuntu/Linux 用vscode 运行/调试 c++ 程序
参考文章 Ubuntu/Linux 用vscode 运行/调试 c++ 程序在ubuntu上搭建vscode的开发环境,出现了几个问题,这里记录一下:
oracle3
2022/05/13
5810
一篇极度舒适的OpenGL_ES环境搭建(Ubuntu 18.04 LTS)
github传送门 ---- 目录 前言 PowerVR CMake环境 FreeImage CMakeLists.txt解析 源码 最后 ---- 前言 作为一个梦想成为游戏制作人的菜鸟程序员, 我终究没悬念地踏上了撰写shader的道路(手动滑稽). 这是一篇比较细致的Ubuntu18.04下OpenGL_ES环境搭建的文件, 也是我爬过n多个坑之后的总结, 希望能帮助到Mac背后的你(手动滑稽). ---- PowerVR 模拟器方面, 我选择PowerVR, 当然, 你可以选择别的, 来到官
sean_yang
2020/02/18
2.7K0
一篇极度舒适的OpenGL_ES环境搭建(Ubuntu 18.04 LTS)
了不起的 Deno 入门篇
Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点:
阿宝哥
2020/05/25
3.4K0
了不起的 Deno 入门篇
使用vscode调试你的node应用
从一开始使用 webstorm 内置的 debug 功能, 到使用node-inspector库进行调试顺便脱离 webstorm 的笨重, 再后来 nodejs 内置了debugger 模块也可以帮助调试我们的应用.
funkyLover
2019/05/24
2.7K0
相关推荐
Node.js 调试一路走来经历了什么
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档