VS Code 未验证断点

Posted

技术标签:

【中文标题】VS Code 未验证断点【英文标题】:VS Code Unverified Breakpoints 【发布时间】:2018-11-21 02:15:01 【问题描述】:

我正在尝试在 VS Code (v. 1.24.0) 中调试 Node/Express TypeScript 应用程序,并且在调试期间我的所有断点都显示为灰色。

错误是“未验证的断点,已设置断点但尚未绑定。”我已经搜索过,但无法弄清楚我的配置有什么问题。控制台没有错误,我选择进程时调试器附加成功,但是断点不起作用。

如何调试?

基本文件夹结构:

/.vscode
/src/server.ts
/dist/server.js
launch.json
tsconfig.json

launch.json


            "type": "node",
            "request": "attach",
            "name": "Attach by Process ID",
            "processId": "$command:PickProcess",
            "protocol": "inspector",
            "address": "localhost",
            "port": 8080,
            "restart": true,
            "preLaunchTask": "npm: build",
            "sourceMaps": true,
            "outFiles" : [ "$workspaceFolder/dist/**/*.js" ]
        ,

tsconfig.json


  "compilerOptions": 
    "alwaysStrict": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es6",
    "outDir": "dist",
    "rootDir": "src",
    "sourceMap": true,
    "typeRoots": [ "node_modules/@types" ]
  ,
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]

tasks.json

"version": "2.0.0",
    "tasks": [
        
            "type": "npm",
            "script": "build",
            "group": 
                "kind": "build",
                "isDefault": true
            
         ]

【问题讨论】:

他们是否一直处于灰色状态?文件尚未编译/渲染的好变化。您是否尝试过一些 typescript 的源地图配置,您使用的是 webpack 吗? 我还要补充一点,这很可能不是 VS Code 问题。更多的配置在某个地方。 @DylanWright 同意了。我只是找不到正确的配置。是的,它们保持灰色。是的,我已经尝试过打字稿配置。不,不使用 webpack。 【参考方案1】:

对于遇到此错误的任何人,我都能找到解决方案。问题在于我启动 Node 进程的方式,而不是源映射的映射(这会产生不同的错误)。

为了附加到该进程,我从 VS Code 终端启动它,如下所示:

node --inspect dist/server.js

launch.json:


            "type": "node",
            "request": "attach",
            "name": "Attach by Process ID",
            "processId": "$command:PickProcess",
            "protocol": "inspector",
            "address": "localhost",
            "port": 8080,
            "restart": true,
            "preLaunchTask": "npm: build",
            "sourceMaps": true,
            "outFiles" : [ "$workspaceRoot/dist/**/*.js" ]
        ,

【讨论】:

【参考方案2】:

我今天遇到了这个问题,我尝试重新构建并重新运行调试器。我关闭了所有 VS Code 实例并重新启动,现在可以工作了。

【讨论】:

【参考方案3】:

我发现我试图在一个文件中设置的所有断点都遇到了这个问题,但其余的都没有。

我将文件 dispatcher.js 命名为小写,但将其拉入节点:

const  Dispatcher  = require('./Dispatcher')

内容是一个 javascript 类,被导出为:

module.exports =  Dispatcher 

【讨论】:

【参考方案4】:

我在使用 vscode 1.25 时遇到了这个问题

看起来它是在调试会话运行时更改包含断点的源 (.ts) 时触发的。可以通过重新保存源代码或重新切换断点来重新启用断点。

但是,如果源已更改,则必须重新启动调试才能与源同步。

这个问题似乎也蔓延到了编辑模式,即使离开调试模式,断点也会保持“未验证”。同样,在这种情况下,重新保存源似乎会重新启用断点。

【讨论】:

【参考方案5】:

我遇到了同样的问题;如果出现错误,调试器将报告错误,但如果没有错误,它不会在断点处停止。为我解决的更改是指定将提供的确切文件名,而不仅仅是 localhost。例如在 NodeJS 上,仅指定 localhost:3000 的 Express 不会在我的断点处停止,但指定 localhost:3000/index.html 会按预期工作

按预期在断点处停止的完整配置(迄今为止):

我在 VSCode 中打开的文件夹:learningPixi 完整文件夹位置(Ubuntu Linux):/home/leigh/node/pixi-tut/learningPixi

我的文件夹结构是:

/home/leigh/node/pixi-tut/learningPixi/.vscode/launch.json /home/leigh/node/pixi-tut/learningPixi/public/index.html /home/leigh/node/pixi-tut/learningPixi/server.js

我的 launch.json 文件的内容:


  "version": "0.2.0",
  "configurations": [
    
      "type": "chrome",
      "request": "launch",
      "name": "Launch Chrome against localhost",
      "url": "http://localhost:3000/index.html",
      "webRoot": "$workspaceFolder/public",
      "skipFiles": ["pixi.min.js"]
    
  ]

“skipFiles”也非常有用,否则调试器会进入每个函数调用

我的(非常基本的)快速服务器配置仅用于在静态文件中调试 JavaScript:

const express = require('express');
const path = require('path');

const app = express();
app.use(express.static(path.join(__dirname, '/public')));
app.listen(3000, () => console.log('App started on port 3000'));

根据上面的文件夹结构,确保 index.html 位于 /public 文件夹中

如果从 HTML 文件中调试 JavaScript,您可能还需要转到 VSCode 中的设置并启用:Allow Breakpoints Everywhere

【讨论】:

【参考方案6】:

对于未来的读者:我遇到了这个问题,因为我在尝试调试之前运行了我的应用的 prod 版本。 prod 构建删除了 VS Code 成功调试所需的源映射,因此我运行了我的应用程序的开发构建,然后进行了调试,一切都按预期工作。

【讨论】:

以上是关于VS Code 未验证断点的主要内容,如果未能解决你的问题,请参考以下文章

使用 VS Code 调试 Vue.js 应用程序。错误未验证断点

未绑定断点 - VS Code |铬 |角

VS Code - 节点断点未绑定

debug-vuejs-from-vs-code:在 chrome 中调试 vueJS 应用程序时未绑定断点

VS Code断点调试

VS Code中多个文件中的断点?