Nodejs之debug

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

--inspect 和--inspect-brk的区别是--inspect-brk默认会在第一行代码进行断点
在chrome浏览器输入chrome//inspect

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

Nodejs之debug
文章图片
image.png
临时保存 直接在chrome浏览器修改,ctrl+s保存。可以自动生效

Nodejs之debug
文章图片
image.png 【Nodejs之debug】
其他打开方式 格式devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/e9f999f7-351b-4fcb-a9ce-0bcbf03a81c3
后面那段ws=xxx,是执行了--inspect的返回结果。

Nodejs之debug
文章图片
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生成的端口

    推荐阅读