Skip to content

调试与开发者工具

构建应用程序通常是 20% 编写代码,80% 弄清楚它为什么不工作。在 Tauri 独特的“三明治”架构中,调试需要双重方法:一套工具用于 Web 前端(web frontend),另一套用于 Rust 后端(Rust backend)。本章将为你提供解决代码中谜团所需的侦探工具包。

由于你的 Tauri 应用程序的视觉层(visual layer)本质上是一个在系统 WebView 中运行的网页,你可以使用你已经熟悉并喜爱的 Web 开发工具。

当你在开发模式(development mode)下运行应用程序(tauri dev)时,Web Inspector 默认是启用的。你可以像在浏览器中一样打开它:

  • Windows/Linux:在应用程序窗口中的任意位置右键点击并选择 Inspect(检查)。或者,按下 Ctrl + Shift + I(或 F12)。
  • macOS:右键点击并选择 Inspect Element(检查元素)。如果此选项不可见,你可能需要在 Safari 的设置中启用“开发”(Develop)菜单,因为 Tauri 在 macOS 上使用 WebKit。

在 Inspector 内部,你可以访问控制台(Console,用于 JavaScript 错误)、网络选项卡(Network tab,查看资源加载)和元素选项卡(Elements tab,调试 CSS 布局问题)。

后端逻辑:println!、日志记录和追踪

Section titled “后端逻辑:println!、日志记录和追踪”

调试 Rust 端需要不同的方法。WebView 控制台不会自动显示 Rust 错误。查看核心进程(Core Process)中发生的情况最简单的方法是使用标准输出(standard output)。

当你运行 tauri dev 时,你的终端窗口(terminal window)充当标准输出。你可以使用 println! 或 eprintln! 等宏(macros)将消息发送到那里。

#[tauri::command]
fn greet(name: &str) -> String {
// This message appears in your terminal running 'tauri dev'
// 这条消息会出现在运行 'tauri dev' 的终端中
println!("Frontend sent name: {}", name);
format!("Hello, {}!", name)
}

对于生产级应用程序(production-grade applications),简单的打印语句(print statements)是不够的。我们建议使用 log crate 或 tracing crate 结合 Tauri Log 插件。这允许你配置日志级别(log levels)(Info, Debug, Error),甚至将 Rust 日志转发到前端控制台(frontend console)或文件中。

有时你需要暂停执行(pause execution)并检查内存变量(inspect memory variables)。你可以将标准的 Rust 调试器(Rust debuggers)附加到 Tauri 进程(Tauri process)。

  • VS Code:使用 ‘CodeLLDB’ 扩展。你可以配置一个 .vscode/launch.json 文件来附加到 target/debug/ 中生成的应用程序二进制文件。
  • JetBrains / RustRover:对将调试器附加到 Cargo 运行配置有出色的内置支持。

在移动设备(mobile devices)上调试会增加一层复杂性,但现代工具(modern tooling)有效地弥合了这一差距。

Android 调试:

  • 在你的 Android 设备设置中启用 USB 调试。
  • 通过 USB 将设备连接到你的电脑。
  • 在你的电脑上打开 Google Chrome 浏览器并导航到 chrome://inspect。
  • 勾选“Discover USB devices”(发现 USB 设备)复选框。你将在“Remote Targets”(远程目标)下看到你的 Tauri 应用程序。点击 Inspect(检查)以打开一个连接到你手机的完整 DevTools 窗口。

iOS 调试:

  • 将你的 iOS 设备连接到你的 Mac。
  • 在你的 Mac 上打开 Safari。
  • 在菜单栏中,导航到 开发 > [你的设备名称] > [你的应用]。这将为正在运行的应用打开 WebKit Web Inspector。

注意:请确保你的应用程序是使用 debug 标志构建的(在 tauri android dev / tauri ios dev 中默认启用),以便 WebView 可以被检查(inspectable)。