8

在 Atom 中,我可以通过打开开发人员工具 (++) 并浏览 JavaScript 文件来调试已安装OptionCmd扩展I~/.atom/packages例如

Atom 开发者工具

可以在 VSCode 中执行此操作吗?通过Help -> Toggle Developer Tools打开开发人员工具后,我能找到的唯一与扩展相关的文件是图标图像:

VSCode 开发者工具

4

4 回答 4

8

1.查找扩展主机进程的PID:

$ PID=$(pgrep -f "^/Applications/Visual Studio Code\.app/.*--type=extensionHost")
$ echo $PID
35791

参数-f告诉pgrep将模式与完整的进程参数字符串匹配,而不仅仅是进程名称。

2. 发送 SIGUSR1 到扩展主机节点进程,告诉它开始监听调试器连接

$ kill -SIGUSR1 $PID

(这不会产生任何输出。)

3. 查找进程开始监听的端口lsof

$ lsof -p $PID -a -i4tcp
COMMAND     PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Code\x20H 35791 tim.vergenz   58u  IPv4 0x8af67df8a9aa26a8      0t0  TCP localhost:63767 (LISTEN)

论据解释:

  • -p表示按PID过滤
  • -i4tcp表示按 Internet 地址过滤(4tcp仅表示 IPv4 / tcp 协议)
  • 中间-a通过 AND 而不是默认的 OR 组合了两个过滤器

在“NAME”列中,您将找到您的 VS Code 扩展主机进程正在侦听的主机和端口——即在上面的示例中,localhost:63767.

4. 打开 Chrome Devtools,在设备 > 发现网络目标 > 配置下添加调试地址。

Chrome 开发工具 @ chrome://inspect

从步骤 3 添加调试器地址

5. 打开你的新调试目标:

连接到新的调试目标

您可能需要手动添加~/.vscode/extensions到工作区以浏览文件并添加断点:

将文件夹添加到工作区

...并单击“允许”授予它权限:

允许 devtools 访问 ~/.vscode/extensions

成功!

成功! VS Code 扩展现在显示在 devtools 中

于 2021-04-14T21:12:04.900 回答
2
于 2020-01-31T17:10:48.547 回答
0

由于VS Code 如何实现其调试 UI 和调试协议,这是不可能的(但我对此不是 100% 确定)。

调试适配器是 VS Code 可扩展架构的一部分:它们作为扩展提供。它们与其他扩展的不同之处在于调试适配器代码不在扩展主机中运行,而是作为单独的独立程序运行。

您可以在调试器思想下轻松运行扩展。您将需要扩展源文件和调试器启动配置。

您可以在VS Code 文档中找到有关运行和调试扩展的更多信息。

您还可以检查启动配置的示例扩展字数

于 2016-08-18T10:07:22.577 回答
0

我希望这对您在 vs 代码扩展开发中有所帮助您可以通过这种方式设置调试环境

  1. 创建名为 .vscode 的文件夹
  2. 在此文件夹中创建名为 launch.json 的 json 文件
  3. 在 json 文件中你需要这个脚本
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Extension",
                "type": "extensionHost",
                "request": "launch",
                "runtimeExecutable": "${execPath}",
                "args": [
                    "--extensionDevelopmentPath=${workspaceFolder}"
                ]
            }
        ]
    }

  1. 然后你按 F5 vs code 将启动安装了你的扩展的新窗口
  2. 在新窗口中 CTRL+SHIFT+P
  3. 搜索“切换开发者工具”

如果扩展不适合您,您只需运行步骤 5 和 6

于 2020-03-31T14:35:55.800 回答