SuperAPI AI 工具集

debugging-tauri-apps

测试与质量

查看项目

更新于 10-15 15:05

技能介绍

本技能面向 Tauri v2 应用调试,覆盖 VS Code、RustRover/IntelliJ、Neovim 三套主流编辑环境,以及 CrabNebula DevTools 这一运行时观测工具。

一、仅开发环境代码 可用条件编译把调试代码排除出生产构建:#[cfg(dev)] 只在 tauri dev 时运行;cfg!(dev) 提供运行时分支;tauri::is_dev() 提供程序化判断;#[cfg(debug_assertions)] 对应 debug 构建以及 tauri build --debug。

二、控制台调试 Rust 侧可用 println! 输出到 tauri dev 所在终端,dbg!(&variable) 会打印变量并附带文件与行号信息。要获得更详细的错误信息,可启用回溯:Linux/macOS 使用 RUST_BACKTRACE=1 tauri dev;Windows PowerShell 先设置 $env:RUST_BACKTRACE=1 再执行 tauri dev。

三、WebView DevTools 打开方式包括:右键选择 “Inspect Element”、Ctrl + Shift + i(Linux/Windows)、Cmd + Option + i(macOS)。不同平台使用各自的检查器:Linux 为 WebKit,macOS 为 Safari,Windows 为 Edge DevTools。也可在 setup 中配合 #[cfg(debug_assertions)] 调用 window.open_devtools()(以及注释掉的 close_devtools())进行编程控制。生产环境调试可执行 tauri build --debug;若要在生产中长期启用 devtools,可在 src-tauri/Cargo.toml 的 tauri 依赖 features 中加入 "devtools",但需注意:该 feature 会启用 macOS 私有 API,会导致无法通过 App Store 审核。

四、VS Code 需要扩展:vscode-lldb(全平台,LLDB 调试器);Windows 上可用 C/C++ 扩展(Visual Studio 调试器)。提供 .vscode/launch.json 配置示例,包含 “Tauri Development Debug”(lldb,cargo build 带 --manifest-path=./src-tauri/Cargo.toml --no-default-features,preLaunchTask 为 ui:dev)和 “Tauri Production Debug”(lldb,cargo build --release,preLaunchTask 为 ui:build)。Windows 上为了更快调试和更好的枚举支持,可用 cppvsdbg 类型配置,program 指向 ${workspaceRoot}/src-tauri/target/debug/your-app-name.exe,preLaunchTask 为 dev。tasks.json 示例包含 ui:dev(后台 npm run dev)、ui:build(npm run build)、build:debug(cargo build,cwd 为 src-tauri)以及依赖前两者的 dev 任务。 调试流程:在 Rust 文件行号边距点击设置断点;按 F5 或从 Run 菜单选择调试配置;preLaunchTask 自动启动开发服务器;调试器附加并在断点处停止。注意:LLDB 会绕过 Tauri CLI,因此 beforeDevCommand 和 beforeBuildCommand 必须配置为任务。

五、RustRover / IntelliJ 项目配置:若项目缺少顶层 Cargo.toml,可创建 workspace 文件 [workspace] members = ["src-tauri"],或通过 Cargo 工具窗口附加 src-tauri/Cargo.toml。 运行配置需创建两个:其一为 Tauri App(Cargo)配置,Command 为 run,Additional arguments 为 --no-default-features,该参数很关键,用于让 Tauri 从开发服务器加载资源而非打包;其二为开发服务器配置:Node 项目创建 npm Run Configuration 并设置包管理器与 dev 脚本,Rust WASM(Trunk)则创建 Shell Script 配置执行 trunk serve。 调试流程:先启动开发服务器配置,再对 Tauri App 配置点击 Debug,RustRover 会自动停在 Rust 断点,可检查变量并单步执行。

六、Neovim 所需插件:nvim-dap(DAP 客户端)、nvim-dap-ui(调试 UI)、nvim-nio(nvim-dap-ui 的异步依赖)、overseer.nvim(推荐,任务管理)。前置条件是从 GitHub releases 下载 codelldb 并记录安装路径。 提供 dap.adapters.codelldb 配置(type 为 server,executable 指向 codelldb 并传 --port)、dap.configurations.rust 的 “Launch Tauri App” 启动配置(含 program 交互式输入路径、cwd、stopOnEntry=false),以及 dapui.setup() 与 attach/launch 打开 UI、terminated/exited 关闭 UI 的监听配置。视觉指示用 sign_define 定义 DapBreakpoint(文本 B)和 DapStopped(文本 >)。按键映射包括 F5 continue、F6 disconnect(terminateDebuggee=true)、F10 step_over、F11 step_into、F12 step_out、Leader+b 切换断点、Leader+o 切换 overseer、Leader+R 运行模板。开发服务器任务可创建 .vscode/tasks.json 供 overseer.nvim 使用,示例为 process 类型 “dev server”,执行 npm run dev,isBackground 为 true,并带 problemMatcher(beginsPattern 为 .Rebuilding.、endsPattern 为 .listening.)。注意:绕过 Tauri CLI 时开发服务器不会自动启动,需用 overseer.nvim 或手动启动。

七、CrabNebula DevTools 该工具提供实时应用插桩,包括日志检查、性能监控、Tauri 事件与命令分析。功能:检查日志事件(包括依赖日志)、监控命令执行性能、分析带 payload 与响应的事件、实时可视化。安装命令为 cargo add tauri-plugin-devtools@2.0.0。初始化应尽早放在 src-tauri/src/main.rs:在 #[cfg(debug_assertions)] 下调用 tauri_plugin_devtools::init(),并在同一条件下 builder = builder.plugin(devtools)。运行时执行 tauri dev 会自动打开基于 Web 的界面,显示可过滤的应用日志、带耗时的 IPC 命令调用、事件 payload 与响应以及性能 span。完整文档见 CrabNebula DevTools 文档。

八、快速参考 启用回溯:RUST_BACKTRACE=1 tauri dev;打开 WebView DevTools:Ctrl+Shift+i / Cmd+Option+i;调试构建:tauri build --debug;添加 DevTools 插件:cargo add tauri-plugin-devtools@2.0.0。

九、IDE 对比 扩展/插件:VS Code 为 vscode-lldb,RustRover 内置,Neovim 为 nvim-dap + codelldb;Windows 替代方案:VS Code 为 cppvsdbg,RustRover 内置,Neovim 为 codelldb;任务运行器:分别为 tasks.json、Run configs、overseer.nvim;配置复杂度:VS Code 中等,RustRover 低,Neovim 高。

十、常见问题 断点未命中:确保构建时设置了 --no-default-features;开发服务器未启动:配置 preLaunchTask 或手动启动;应用未加载前端:Tauri 应用启动前开发服务器必须已运行;Windows 枚举显示问题:改用 cppvsdbg 而非 LLDB。