调试
浏览器调试
恢复执行和单步执行的区别?
恢复执行是让程序继续执行,而单步执行则是让程序逐行执行
恢复执行(Resume)是指在调试器暂停执行后,通过点击 恢复执行按钮,让代码继续执行到下一个断点或程序结束处。这相当于取消断点并让程序继续执行,直到下一个断点或程序结束。
单步执行则是在调试器暂停执行后,以不同的方式逐行执行代码
单步执行的三种方式:
- Step Over(跨过):执行当前行代码并停止在下一行。如果当前行代码是一个函数调用,那么会将整个函数执行完并停在函数返回后的下一行
- Step Into(进入):如果当前行代码是一个函数调用,那么进入这个函数并停在函数的第一行,否则就和 Step Over 相同
- Step Out(跳出):在当前函数内部执行,执行完当前函数并返回到函数调用的下一行
Node 调试
VsCode 调试
-
点击 Debug 窗口的
Run and Debug
或者create a launch.json file
可以快速创建调试的配置文件,选择调试平台 -
生成的 launch.json 如下。如果 url 不一致,需要修改 url
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
// "userDataDir": false,
}
]
}
创建 Chrome Debug 配置有两种方式:launch、attach
- launch:把 url 对应的网页跑起来,指定调试端口,然后 frontend 自动 attach 到这个端口
- attach:如果已经有一个在调试模式跑的浏览器了,那直接连接上就行
- 点击左上角的小三角形启动调试,会弹出一个浏览器窗口,一般在 vscode 的左上方会出现一排调试按钮
- 在代码里添加 debugger 断点,然后点击 Restart 调试按钮,就可以看到代码的运行过程了
调试时默认启动一个无痕模式的浏览器,这时无法使用 react devtools 或者 vue devtools 这些调试工具,可以设置 userDataDir: false
即可。
调试 vue2 项目
在 vue.config.js 配置 source-map:
configureWebpack: {
devtool: process.env.NODE_ENV !== "production" ? "source-map" : '',
}
配置 launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:1024",
"webRoot": "${workspaceFolder}",
"sourceMapPathOverrides": {
"webpack:///src/*": "${workspaceFolder}/src/*"
}
}
]
}