如何调试已安装的 VSCode 扩展?

Spe*_*cer 6 visual-studio-code vscode-extensions

在凌动,我能够调试安装的扩展通过打开开发者工具(Option+ Cmd+ I),并通过JavaScript文件浏览~/.atom/packages,如

Atom 开发者工具

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

VSCode 开发者工具

ver*_*nzt 17

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

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

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

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

$ kill -SIGUSR1 $PID
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

参数解释:

  • -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 扩展现在显示在开发工具中


Jak*_*iec 0

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

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

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

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

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