macOS下开发调试Node原生模块保姆级教程
条评论最近一年一直在从事Electron
开发工作。在Electron
开发中,基于Node.js
的开发可以说是极其重要的一部分。我首先遇到的问题就是如何开发调试Node Native Addons。由于Node Native Addons主要是使用C++
语言开发,而在JavaScript
环境下调用,所以我们必须跨语言环境进行开发调试。
开发前的准备
首先需要安装node-gyp
,它是用来构建开发、编译node
原生模块环境的跨平台命令行工具。
1 | npm install node-gyp -g |
开发
创建一个项目目录,并进入到目录下,
1 | mkdir demo && cd demo |
接着使用npm
初始化项目,
1 | npm init |
一路回车就生成了package.json
,接着我们需要创建这个模块项目的编译配置文件binding.gyp
,
1 | touch binding.gyp |
在文件中写入以下配置
1 | { |
接下来便是创建上面配置所说的源文件,
1 | touch addon.cc |
接下来在源文件中添加以下demo代码
1 | // 这段demo代码来自于Node.js 文档 C++ Addons 章节,代码含义是输出字符串“world” |
接下来使用
1 | node-gyp configure |
为当前平台生成项目构建文件,接下来我们会观察到根目录下多了一个 build
文件夹,其中有一些文件,们暂时不关心其中的文件是什么,有什么作用。
继续使用
1 | node-gyp build |
生成编译 addon.node
文件,这将被放入 build/Release/
目录中。目录中的其他文件我们仍然暂时不关心,addon.node
才是我们需要关注的重点。这就是编译出来的原生模块。
接下来我们在根目录下创建一个测试文件test.js
,
1 | touch test.js |
在文件中引入并使用这个 node
模块
1 | const addon = require('./build/Release/addon'); |
接下来执行
1 | node test.js |
我们便可以看到命令行中输出了
1 | hello world |
到这一步,我们的原生模块已经开发好了,并且可以在 js
文件中使用了。
接下来我们讲如何调试。
调试
此处我们主要讲解如何调试 C++
代码部分。
使用以下命令
1 | node-gyp configure --debug -- -f xcode |
生成 Xcode
项目文件 binding.xcodeproj
,生成位置位于 build
目录下。
我们在 Finder
中双击此文件用 Xcode
打开。
点击下图框中的位置
选择 Edit Scheme...
在 Run
分栏下选择 Info
卡片,点击 Executable
后的选择框,选择 Other...
找到 node
可执行文件所在的位置,选择 node
可执行文件。
得到如下结果
切换到 Arguments
卡片下,点击 Arguments Passed On Launch
下的 +
按钮,
添加一项内容,内容是 test.js
文件的绝对路径,
如此一来我们就配置好了,接下来我们来调试,在 addon.cc
中设置一个断点(下图黄框处),之后点击运行按钮(下图绿框处),
我们可以看到代码停止在了断点处,侧栏及底栏也显示出了相应的调试信息,
点击上图黄框处按钮跳过断点,我们得到了最终运行结果(下图黄框处),
到此为止,我们已经在 Xcode
中完成了一次调试。
相信通过此篇文章的讲解我们都可以学会如何利用 Xcode
调试我们的 node
原生模块,此篇文章到这里也就结束了。如果有什么问题,欢迎向我提问。
如果你不知道你的node环境路径是什么,请使用which node
命令查看。
在 Finder
下使用 Shift + Command + G
快速跳转到相应路径位置。
本文参考文献
Node.js 文档 C++ Addons 章节
GYP3 文档
Debug Node.js native addon with Xcode
本文标题:macOS下开发调试Node原生模块保姆级教程
文章作者:周锟鹏
发布时间:2022-01-13
最后更新:2023-11-22
原始链接:https://blog.zhoukunpeng.site/posts/9b6f7b56/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!