Nodejs之debug

chrome浏览器调试

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

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

在chrome浏览器输入chrome//inspect

debug

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

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

image.png

临时保存

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

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生成的端口
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容