断点不触发或跳空白行,主因是Chrome DevTools协议未连通或source map路径映射错位;需启用WebView远程调试、确认端口唯一、严格匹配webRoot/outFiles路径,并重启调试会话验证Loaded source map日志。

VS Code 调试移动端混合应用(如 Cordova、Capacitor、React Native Webview 场景)时,断点不触发或跳到空白行,基本是调试通道没对上——不是代码问题,而是 Chrome DevTools 协议没连通,或 source map 映射路径错位。
Chrome 远程调试端口没开或被占用了
Capacitor 或 Cordova 的 WebView 默认不暴露调试接口,VS Code 无法 attach。必须手动启用远程调试,并确保端口唯一。
- Android 端:在
adb shell中执行adb forward tcp:9222 localabstract:chrome_devtools_remote;若报错error: more than one device/emulator,先用adb devices确认唯一设备,再加-s <serial> - iOS 模拟器:需在 Safari → 开发 → [模拟器名] → 勾选对应页面;VS Code 的
launch.json中url必须填http://localhost:XXXX(和你ionic serve或capacitor run ios -l启的服务端口一致) - 检查端口占用:
lsof -i :9222(macOS/Linux)或netstat -ano | findstr :9222(Windows),杀掉残留进程再重试
sourceMap 路径映射失败导致断点停在 bundle.js
你在 src/App.tsx 打了断点,却停在 www/build/app.js 第 1 行,变量全是 _a_b——说明构建产物带了 .map,但 VS Code 不知道该回溯到哪。
- Capacitor 项目:确认
vite.config.ts中build.sourcemap为true,且输出目录设为www;launch.json里必须加"webRoot": "${workspaceFolder}/www" - Cordova + webpack:检查
devtool是'source-map'(不是'eval-source-map'),并在launch.json的outFiles中写死路径:"outFiles": ["${workspaceFolder}/platforms/android/assets/www/js/*.js"] - 关键验证动作:启动调试后打开「调试控制台」,搜
Loaded source map from,看到类似file:///xxx/www/build/app.js.map且无 404,才算真正加载成功
attach 模式下 address 和 port 配置反了
用 capacitor run android -l --host=0.0.0.0 启服务后,VS Code 却连不上——常见错误是把本地开发机当成了目标设备地址。
- Android 真机调试时,
launch.json中的"address"应设为"0.0.0.0"(容器/设备监听所有网卡),"port"填你ionic serve实际跑的端口(如8100),不是9222 -
"url"字段只用于 launch 模式自动打开浏览器;attach 模式下它无效,别依赖它定位源码 - 真机连 Wi-Fi 调试时,确保手机和电脑在同一局域网,且防火墙放行对应端口(macOS 可用
sudo ufw allow 8100)
最易被忽略的是:每次改完 launch.json 或构建配置后,必须关掉当前调试会话再重启——热重载不会刷新调试通道绑定状态。断点是否生效,只看红点是不是实心,以及调试控制台有没有 Loaded source map 日志,其余都是干扰项。


















