应用程序调试
在 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_devtools
和 Window::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
- Yarn
- pnpm
- bun
- Cargo
npm run tauri build -- --debug
yarn tauri build --debug
pnpm tauri build --debug
bunx tauri build --debug
cargo 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 应用程序的核心进程。