應用程式除錯
在 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 開發工具的網頁檢查器。你也可以在 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)/[應用程式名稱]
,並直接在您的主控台中執行,或直接在檔案系統中雙擊可執行檔本身(注意:使用此方法時,主控台會在發生錯誤時關閉)。
啟用 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 應用程式的核心程序。