also setup panic handler on gui

this helps collect gui crash info.
This commit is contained in:
sijie.sun
2024-08-15 22:05:34 +08:00
committed by Sijie.Sun
parent 198c239399
commit ff6da9bbec
3 changed files with 18 additions and 13 deletions

View File

@@ -19,7 +19,6 @@ use serde::{Deserialize, Serialize};
use tauri::Manager as _; use tauri::Manager as _;
#[derive(Deserialize, Serialize, PartialEq, Debug)] #[derive(Deserialize, Serialize, PartialEq, Debug)]
enum NetworkingMethod { enum NetworkingMethod {
PublicServer, PublicServer,
@@ -337,7 +336,6 @@ pub fn init_launch(_app_handle: &tauri::AppHandle, enable: bool) -> Result<bool,
Ok(enabled) Ok(enabled)
} }
#[cfg_attr(mobile, tauri::mobile_entry_point)] #[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() { pub fn run() {
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
@@ -345,6 +343,10 @@ pub fn run() {
use std::process; use std::process;
process::exit(0); process::exit(0);
} }
#[cfg(not(target_os = "android"))]
utils::setup_panic_handler();
tauri::Builder::default() tauri::Builder::default()
.plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_os::init())
.plugin(tauri_plugin_clipboard_manager::init()) .plugin(tauri_plugin_clipboard_manager::init())
@@ -382,7 +384,7 @@ pub fn run() {
toggle_window_visibility(app); toggle_window_visibility(app);
} }
}) })
.icon(tauri::image::Image::from_bytes(include_bytes!( .icon(tauri::image::Image::from_bytes(include_bytes!(
"../icons/icon.png" "../icons/icon.png"
))?) ))?)
.icon_as_template(false) .icon_as_template(false)

View File

@@ -33,6 +33,7 @@ use common::config::{
}; };
use instance::instance::Instance; use instance::instance::Instance;
use tokio::net::TcpSocket; use tokio::net::TcpSocket;
use utils::setup_panic_handler;
use crate::{ use crate::{
common::{ common::{
@@ -533,16 +534,6 @@ fn peer_conn_info_to_string(p: crate::rpc::PeerConnInfo) -> String {
) )
} }
fn setup_panic_handler() {
std::panic::set_hook(Box::new(|info| {
let backtrace = backtrace::Backtrace::force_capture();
println!("panic occurred: {:?}", info);
let _ = std::fs::File::create("easytier-panic.log")
.and_then(|mut f| f.write_all(format!("{:?}\n{:#?}", info, backtrace).as_bytes()));
std::process::exit(1);
}));
}
#[tracing::instrument] #[tracing::instrument]
pub async fn async_main(cli: Cli) { pub async fn async_main(cli: Cli) {
let cfg: TomlConfigLoader = cli.into(); let cfg: TomlConfigLoader = cli.into();

View File

@@ -239,6 +239,18 @@ pub fn utf8_or_gbk_to_string(s: &[u8]) -> String {
} }
} }
pub fn setup_panic_handler() {
use std::backtrace;
use std::io::Write;
std::panic::set_hook(Box::new(|info| {
let backtrace = backtrace::Backtrace::force_capture();
println!("panic occurred: {:?}", info);
let _ = std::fs::File::create("easytier-panic.log")
.and_then(|mut f| f.write_all(format!("{:?}\n{:#?}", info, backtrace).as_bytes()));
std::process::exit(1);
}));
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::common::config::{self}; use crate::common::config::{self};