Nodejs之debug

chrome浏览器调试

使用 --inspect开关进行调试。一个Nodejs进程开始侦听调试客户端,默认情况下侦听127.0.0.1:9229的域名和端口号

--inspect 和--inspect-brk的区别是--inspect-brk默认会在第一行代码进行断点

在chrome浏览器输入chrome//inspect

Nodejs之debug_第1张图片
debug

调试时候屏蔽node基础库代码

我们调试的时候并不希望调试到基础库(jquery,node)的代码。chrome也提供了这样的功能blackbox。Blackbox允许屏蔽指定js文件,这样调试就可以绕过它们了

Nodejs之debug_第2张图片
image.png

临时保存

直接在chrome浏览器修改,ctrl+s保存。可以自动生效

Nodejs之debug_第3张图片
image.png

其他打开方式

格式devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/e9f999f7-351b-4fcb-a9ce-0bcbf03a81c3
后面那段ws=xxx,是执行了--inspect的返回结果。

image.png

vscode

nodejs启动程序

{
            "type": "node",
            "request": "launch",
            "name": "启动程序",
            "autoAttachChildProcesses": true,
            "program": "${file}"
}

附加在某个进程上

如果程序启动了,或者我们想debugger某个子进程

{
            "type": "node",
            "request": "attach",
            "name": "Attach by Process ID",
            "processId": "${command:PickProcess}"
}

附加在某个已经打开的端口

应用程序以 --inspect打开。比如:node --inspect ./server.js
可以看到输出信息

➜  cfork git:(master) ✗ node --inspect ./server.js
Debugger listening on ws://127.0.0.1:9229/930fe957-158c-4fa0-ae7d-2046c45a47f6
For help see https://nodejs.org/en/docs/inspector

这里我们看到debug的端口是9229。
attach到已经打开的程序端口

{
            "type": "node",
            "request": "launch",
            "name": "nodemon",
            "runtimeExecutable": "nodemon",
            "program": "${workspaceFolder}/app.js",
            "restart": true,
            "console": "integratedTerminal",
            "internalConsoleOptions": "neverOpen"
}
远程调试
  1. 远程调试,首先应用启动应该以--inspect来启动。
➜  cfork git:(master) ✗ node --inspect ./server.js
Debugger listening on ws://127.0.0.1:9229/dd9cb125-f6c0-4cc6-a28f-f6c7ad0b5bee
For help see https://nodejs.org/en/docs/inspector
  1. vscode配置
{
            "type": "node",
            "request": "attach",
            "name": "Attach to Remote",
            "address": "127.0.0.1",
            "port": 9229,
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/Users/yk/heimanba/aliFE/egg-demo/modules/cfork"
}
  • localRoot: 本地文件夹
  • remoteRoot: 远程机器映射文件夹(不能把所有文件都加载进来)
  • port: 执行--inspect生成的端口

你可能感兴趣的:(Nodejs之debug)