vscode默认f5对electron主进程无效,必须改用attach模式并显式配置--inspect=9229、runtimeexecutable指向本地electron二进制、stopallchildren确保进程干净重启,同时启用electron_enable_logging日志辅助验证。

VSCode 默认的 F5 启动方式对 Electron 主进程完全无效——必须禁用 launch 模式,改用 attach 并手动控制 Electron 进程生命周期。
主进程断点不触发?别用 F5 直接启动
Electron v12+ 默认关闭 V8 Inspector,F5 触发的 launch 模式只会跑起进程,但调试器连不上。VSCode 的 node 调试器无法自动注入 --inspect,它只负责 attach。
- 删掉
launch.json里所有"request": "launch"的主进程配置 - 改成
"request": "attach",端口与启动参数严格一致(如9229) - 确保
package.json的start脚本显式带参:"start": "electron --inspect=9229 ." - Windows 用户注意:
runtimeExecutable必须是${workspaceFolder}/node_modules/.bin/electron.cmd,不是.js
如何让 Ctrl+F5(重启)真正重载主进程逻辑?
Ctrl+F5 在 VSCode 中默认只是「重启当前调试会话」,但它不会杀掉旧 Electron 进程——导致新 attach 失败、断点仍灰、IPC 注册重复。
- 在
launch.json主进程配置中加"stopAllChildren": true,强制终止子进程 - 加
"env": { "ELECTRON_ENABLE_LOGGING": "true" },终端实时输出 IPC 注册/窗口创建日志,比等断点快得多 - 配合
ps aux | grep electron(macOS/Linux)或tasklist | findstr electron(Windows)手动确认残留进程是否清空 - 不想每次手杀?在
package.json加个清理脚本:"dev:clean": "killall -m electron || true"
快捷键组合要避开 Electron 自身快捷键冲突
Electron 主进程代码里若注册了全局快捷键(如 globalShortcut.register('CommandOrControl+Shift+I', ...)),会和 VSCode 的 Ctrl+Shift+I(打开开发者工具)冲突,导致调试器被劫持。
- 开发阶段临时注释掉
globalShortcut.register调用,或限定仅在生产环境启用 - VSCode 调试时用
Ctrl+Shift+Y打开调试控制台,避免触发 Electron 快捷键 - 主进程里监听
app.whenReady()后再注册快捷键,确保 VSCode 已完成 attach 再接管输入流 - 若必须保留快捷键,把调试端口从默认
9229换成其他值(如9230),避免和某些 Electron 插件的内置调试端口重叠
最易被忽略的是:主进程 attach 成功后,VSCode 不会自动聚焦到断点位置——你得在调试控制台手动点开「CALL STACK」里对应文件,否则即使断点命中也看不到变量值。这和浏览器渲染进程调试体验完全不同。











