跳到主要内容
本页目录

运行与调试

构建并运行、运行、附加三种启动;F5 之后每一步失败时的提示;调试期间的面板与输出;launch.json 字段;Flutter 的 Dart 调试。

选好手机后在源码中打断点,按 F5 即可,插件依次完成构建、签名、安装、启动和调试,不需要任何配置。断点命中后使用 VS Code 标准的调试视图。下面是 Windows 上真机运行和调试的效果。

断点命中时的调试视图

三种启动方式

方式入口说明
构建并运行F5、视图标题栏 ▶、target 行内按钮按当前配置构建、签名、安装到选中设备、启动并附加调试器
运行「KXBuild: 运行」、target 行内按钮不构建,直接安装上一次的构建产物并启动
附加「KXBuild: 附加到运行中的 App」列出手机上正在运行的应用,选一个附加调试器

构建发生在调试会话之前,调试工具栏上的「重启」不会重新编译。改了代码要停止后重新按 F5。

常见错误

构建完成后的每一步都有进度通知,可以取消。哪一步失败就提示哪一步,点「Show Output」查看完整日志。

提示处理
No iOS device selected在 KXBuild 视图中选一台设备
Developer Mode is off手机上打开开发者模式并重启
Developer Disk Image is not mounted重新插拔手机或运行体检
设备尚未配对 / 信任解锁手机并点信任
存储空间不足清理手机空间后重试
没有有效的描述文件、设备不在描述文件中见证书与签名
did not report the app as launched in time解锁手机,检查连接
didn't start in timeApp 可能启动即崩溃,查看设备日志

调试期间

Swift、Objective-C、C / C++ 和 Kotlin Multiplatform 的 Kotlin 代码都可以设置断点,单步、变量、调用栈、监视和调试控制台都是标准调试视图,调试控制台可以输入 lldb 命令。停在没有源码的位置时打开汇编视图。 App 的输出显示在「输出 → KXBuild Console」,构建日志在「输出 → KXBuild」。调试结束会退出手机上的 App,和 Xcode 一致。

launch.json

默认按 F5 即可启动,不需要 launch.json。想固定某个设备、target 或构建配置时,再手动编辑 launch.json,调试器类型写 kxbuild。配置样式和字段说明如下。

{ "version": "0.2.0", "configurations": [ { "type": "kxbuild", "request": "launch", "name": "KXBuild: Build & Run", "build": true }, { "type": "kxbuild", "request": "launch", "name": "KXBuild: Run", "build": false }, { "type": "kxbuild", "request": "attach", "name": "KXBuild: Attach", "attachPid": 0 } ] }
字段说明
buildtrue 先构建再安装,false 直接安装上一次的产物
device设备 UDID,留空用视图中选中的设备
bundle要运行的应用 target 的 Bundle ID,留空用工程中唯一的应用 target,有多个时弹出选择
configurationDebug 或 Release,留空用视图中选中的
attachPid附加时的进程 pid,0 表示运行时弹出列表选择

Flutter

Flutter 工程按 F5 可以直接调试原生 Objective-C 和 Swift 代码。要调试 Dart 代码需要 VS Code 的 Dart 扩展。检测到是 Flutter 工程但没装 Dart 扩展时会提示一键安装,安装后重新「构建并运行」,之后原生断点和 Dart 断点同时生效,支持热重载。

React Native

React Native 和 Expo 可通过 KXBuild 调试原生部分,JS 断点使用 Metro / Hermes 自己的调试器。uni-app 导入后是原生壳加 WebView,原生部分在 KXBuild 里调试,页面 JS 用 HBuilderX 自带的调试工具。

接下来