跳至主要内容

应用程序调试

在 Tauri 中,所有活动部分都可能导致你遇到需要调试的问题。有许多位置会打印错误详细信息,并且 Tauri 包含一些工具,以便使调试过程更直接。

Rust 控制台

查找错误的第一个位置是 Rust 控制台。它位于你运行的终端中,例如,tauri dev。你可以使用以下代码从 Rust 文件中向该控制台打印内容

println!("Message from Rust: {}", msg);

有时 Rust 代码中可能出现错误,Rust 编译器会提供大量信息。例如,如果 tauri dev 崩溃,可以像这样在 Linux 和 macOS 上重新运行它

RUST_BACKTRACE=1 tauri dev

或像这样在 Windows 上运行

set RUST_BACKTRACE=1
tauri dev

此命令会提供一个细粒度的堆栈跟踪。一般来说,Rust 编译器会提供有关问题详细信息来帮助你,例如

error[E0425]: cannot find value `sun` in this scope
--> src/main.rs:11:5
|
11 | sun += i.to_string().parse::<u64>().unwrap();
| ^^^ help: a local variable with a similar name exists: `sum`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0425`.

WebView 控制台

在 WebView 中右键单击,然后选择“检查元素”。这会打开一个类似于你习惯使用的 Chrome 或 Firefox 开发者工具的 Web 检查器。你还可以使用 Linux 和 Windows 上的快捷键 Ctrl + Shift + i,以及 macOS 上的快捷键 Command + Option + i 来打开检查器。

检查器是特定于平台的,在 Linux 上渲染 webkit2gtk WebInspector,在 macOS 上渲染 Safari 检查器,在 Windows 上渲染 Microsoft Edge DevTools。

以编程方式打开 Devtools

你可以使用 Window::open_devtoolsWindow::close_devtools 函数来控制检查器窗口的可见性

use tauri::Manager;
tauri::Builder::default()
.setup(|app| {
#[cfg(debug_assertions)] // only include this code on debug builds
{
let window = app.get_window("main").unwrap();
window.open_devtools();
window.close_devtools();
}
Ok(())
});

在生产环境中使用检查器

默认情况下,检查器仅在开发和调试版本中启用,除非你使用 Cargo 特性启用它。

创建调试版本

要创建调试版本,请运行 tauri build --debug 命令。

npm run tauri build -- --debug

与正常的构建和开发进程一样,首次运行此命令时构建需要一些时间,但后续运行的速度会显著提高。最终捆绑的应用程序已启用开发控制台,并放置在 src-tauri/target/debug/bundle 中。

你还可以从终端运行已构建的应用程序,这会提供 Rust 编译器注释(如果出现错误)或你的 println 消息。浏览到文件 src-tauri/target/(release|debug)/[app name],然后直接在控制台中运行它,或在文件系统中双击可执行文件本身(注意:使用此方法时,控制台会在出现错误时关闭)。

启用 Devtools 功能

危险

devtools API 在 macOS 上是私有的。在 macOS 上使用私有 API 会导致您的应用程序无法被 App Store 接受。

要在生产版本中启用 devtools,您必须在 src-tauri/Cargo.toml 文件中启用 devtools Cargo 功能

[dependencies]
tauri = { version = "...", features = ["...", "devtools"] }

调试核心进程

核心进程由 Rust 提供支持,因此您可以使用 GDB 或 LLDB 对其进行调试。您可以按照 在 VS Code 中调试 指南了解如何使用 LLDB VS Code 扩展来调试 Tauri 应用程序的核心进程。