1 个不稳定版本

0.1.0 2023年9月14日

#7 in #cortex

MIT/Apache

9KB
69

Cortex

OSS by Subtale MIT License Apache-2.0 License

Cortex 是一个针对用 Rust 编写的应用程序的灵活的崩溃处理解决方案。

示例

use subtale_cortex::CrashHandler;

fn run_application() {
    // Your application logic...
}

fn crash_handler(output: std::process::Output) {
    // Handle the output of the application process when it crashes
}

fn main() {
    let result = CrashHandler::with_process(run_application)
        .crash_handler(crash_handler)
        .full_backtrace() // Use `RUST_BACKTRACE` full in your application process
        .run();

    match result {
        Ok(true) => ..,  // The application process finished successfully
        Ok(false) => .., // The application process crashed, but the error was handled successfully
        Err(e) => ..,    // An error was encountered spawning the application or when crash handling
    }
}

工作原理

Cortex 使用 2021 年 3 月 Mason Remaley(Anthropic Studios)在 这篇博客文章 中描述的崩溃处理方法。

崩溃处理实现简单直接:当应用程序启动时,将其再次作为自身的一个子进程调用,并监控子进程的非成功退出码。

为了避免应用程序无限递归调用自身,使用命令行参数(--cortex-child)来识别进程是否是崩溃处理器(因此应调用子进程)或子进程。

例如,第一次运行应用程序时,Cortex 识别出没有 --cortex-child 参数。然后应用程序作为子进程自我启动,这次包含了 --cortex-child 参数,以便启动正常的应用程序逻辑(如上例中的 run_application())。

许可证

Cortex 是免费且开源的。除非明确说明,否则此存储库中的所有代码均根据 MIT 许可证Apache 许可证 2.0 双重许可。

这种许可方式是 Rust 生态系统中的事实标准。

贡献

除非您明确说明,否则您根据 Apache-2.0 许可证定义的任何有意提交以包含在作品中的贡献,均将按上述方式双重许可,不附加任何额外条款或条件。

无运行时依赖项