使用 vscode 调试 nodejs 代码

继前一篇:使用 cmake.js 在 Windows 上编译 js 代码

我们已经能在 vscode 上成功的编译出 js 代码,那我们该如何断点调试 js 代码以及 js 引用的 C 库源码呢

首先要先以 Debug 模式编译 js 代码

复制代码
cmake-js clean
cmake-js compile -D

找到 debug 生成的 pdb 文件,这个很重要,关乎到能否 debug 到 C 库源码

注:pdb 文件一般在 cmakejs/build/Debug 文件夹下

在 .vscode 下修改 launch.json 文件,如果没有的话,就新建一个

settings.json 不用特别设置,在 launch 的时候,编译器会自动添加相关文件

进入 .json 文件中修改相关配置,主要是 js 源文件和 pdb 文件的路径

复制代码
{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "JS Debug Build",
        "type": "node",
        "request": "launch",
        "program": "./projects/ohos/cmakejs/project.js",
        "args": [],
        "console": "integratedTerminal"
      },
      {
        "name": "Windows Attach",
        "type": "cppvsdbg",
        "request": "attach",
        "processId": "${command:pickProcess}"
      },
      {
        "name": "C/C++ Runner: Debug Session",
        "type": "cppdbg",
        "request": "launch",
        "args": [],
        "stopAtEntry": false,
        "externalConsole": true,
        "cwd": "./src",
        "program": "./projects/ohos/cmakejs/build/Debug/project.pdb",
        "MIMode": "cppvsdbg",
        "miDebuggerPath": "gdb",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ]
      }
    ]
  }

注意:.vscode 一般是在项目的子层级下,如果 cmake.js 编译的鸿蒙项目在更深的层级下,就需要先 cd 到鸿蒙项目的层级下,编译好 pdb 文件,再 cd 到最外面项目的层级下,最后进行调试 

好了,下面开始断点调试

在 project.js 代码里打上断点,如果需要查看 js 引用的 napi 代码(js 与 C 库是通过 napi 交互,此处默认为 napi 代码),则在 napi 代码里打上断点

在 RUN AND DEBUG 下拉框里选择 JS Debug Build。选择完后,点左边绿色的调试按钮(三角形),项目会运行并停在 js 代码的断点处

然后继续选择 Windows Attach,并点左边绿色的调试按钮

会跳出 Attach to Process 框,输入 node.exe,并选择 nodejs 目录下 node.exe 路径

确认 Windows Attach 已经运行

点击 Step Over 或者 F10,编译器就会跳到 napi 代码里的断点处

在 napi 代码里就可以继续调试,甚至可以查看 napi 引用的 C 库源码

相关推荐
青 春 记 忆10 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
️学习的小王1 天前
Anaconda国内镜像配置与conda常用命令
ide·经验分享·python·conda
雾沉川1 天前
Rust IDE 选型:除 VS Code 之外,RustRover 非商业场景可免费使用
ide·vscode·rust
界面开发小八哥1 天前
界面控件DevExpress Blazor v26.1新版亮点 - TreeList & 数据编辑器
javascript·编辑器·.net·界面控件·blazor·devexpress·用户界面
精英的英2 天前
记一次 Qt5 Language Server 开发
开发语言·vscode·qt
蹦跶的小羊羔2 天前
Sublime 调用的 py 命令找不到
编辑器·sublime text
2501_915918412 天前
iOS 真机调试工具推荐,安装运行、性能分析有哪些工具
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
FZdydz2 天前
大禹电子多普勒流量计小管径生活污水排污口流量监测应用案例
百度·编辑器·新浪微博
C++ 老炮儿的技术栈3 天前
Qt5.9.1 Windows 完整开发环境搭建流程
开发语言·c++·windows·qt·编辑器·代码化
笨鸟先飞,勤能补拙3 天前
AI与深度学习:从原理到应用
人工智能·windows·vscode·深度学习·机器学习·网络安全·github