We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A patch that works, but doesn't allow for pretty formatting (as BacktraceFrame doesn't allow access to it's fields).
BacktraceFrame
From 3a716a93834cc7d1655ef3bad551385019142a4e Mon Sep 17 00:00:00 2001 From: Thomas de Zeeuw <thomasdezeeuw@gmail.com> Date: Sun, 16 Oct 2022 16:22:15 +0200 Subject: [PATCH 1/2] [WIP] Trim backtraces based on panic location --- src/config.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- src/lib.rs | 4 ++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index 7c81059..af51233 100644 --- a/src/config.rs +++ b/src/config.rs @@ -133,9 +133,54 @@ pub(crate) fn get_log_targets() -> Targets { /// Panic hook that logs the panic using [`log::error!`]. #[cfg(feature = "log-panic")] fn log_panic(info: &std::panic::PanicInfo<'_>) { - use std::backtrace::Backtrace; + use std::backtrace::{Backtrace, BacktraceStatus}; + use std::fmt::{self, Write}; + use std::panic::Location; use std::thread; + use log::kv::{ToValue, Value}; + + struct ShortBackTrace<'a>(&'a Backtrace, Option<&'a Location<'a>>); + + impl<'a> ToValue for ShortBackTrace<'a> { + fn to_value(&self) -> Value<'_> { + Value::from_dyn_display(self) + } + } + + impl<'a> fmt::Display for ShortBackTrace<'a> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self.0.status() { + BacktraceStatus::Captured => { /* Continue. */ } + BacktraceStatus::Disabled => return f.write_str("backtrace disabled"), + BacktraceStatus::Unsupported => return f.write_str("backtrace unsupported"), + _ => { /* Will attempt to print a backtrace. */ } + } + + let file = match self.1 { + Some(loc) => loc.file(), + // Don't have a panic location, so we don't to where to shorten + // the backtrace. + None => return fmt::Display::fmt(self.0, f), + }; + + let mut frame_data = String::new(); + let mut skip = 0; + for (i, frame) in self.0.frames().into_iter().enumerate() { + frame_data.clear(); + write!(&mut frame_data, "{frame:?}").unwrap(); + if frame_data.contains(file) { + skip = i; + break; + } + } + for (n, frame) in self.0.frames()[skip..].into_iter().enumerate() { + write!(f, "{n}. {frame:?}\n")?; + } + Ok(()) + } + } + let thread = thread::current(); let thread_name = thread.name().unwrap_or("unnamed"); let (file, line) = match info.location() { @@ -152,7 +197,7 @@ fn log_panic(info: &std::panic::PanicInfo<'_>) { .target(PANIC_TARGET) .file(Some(file)) .line(Some(line)) - .key_values(&("backtrace", &backtrace as &dyn std::fmt::Display)) + .key_values(&("backtrace", ShortBackTrace(&backtrace, info.location()))) .build(), ); } diff --git a/src/lib.rs b/src/lib.rs index cad8204..c78b137 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -264,6 +264,10 @@ //! [Timestamp feature]: #timestamp-feature #![warn(missing_debug_implementations, missing_docs, unused_results)] +#![cfg_attr( + all(feature = "log-panic", feature = "nightly"), + feature(backtrace_frames) +)] use std::cell::RefCell; use std::io::{self, IoSlice, Write}; -- 2.37.3
Formats:
From 7695fb22df04253e412e273cfa67c5715308c37f Mon Sep 17 00:00:00 2001 From: Thomas de Zeeuw <thomasdezeeuw@gmail.com> Date: Sun, 16 Oct 2022 16:22:57 +0200 Subject: [PATCH 2/2] [WIP] Add file with backtrace formats Don't commit this. --- backtrace.formats | 163 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 backtrace.formats diff --git a/backtrace.formats b/backtrace.formats new file mode 100644 index 0000000..e5b5415 --- /dev/null +++ b/backtrace.formats @@ -0,0 +1,163 @@ +# Original (fmt::Display) + +ts="2022-10-16T13:57:42.951460Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace=" 0: std::backtrace_rs::backtrace::libunwind::trace + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 + 1: std::backtrace_rs::backtrace::trace_unsynchronized + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 + 2: std::backtrace::Backtrace::create + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs:333:13 + 3: std::backtrace::Backtrace::force_capture + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs:314:9 + 4: std_logger::config::log_panic + at ./src/config.rs:156:21 + 5: core::ops::function::Fn::call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs:78:5 + 6: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/alloc/src/boxed.rs:1952:9 + 7: std::panicking::rust_panic_with_hook + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:692:13 + 8: std::panicking::begin_panic_handler::{{closure}} + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:577:13 + 9: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs:138:18 + 10: rust_begin_unwind + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:575:5 + 11: core::panicking::panic_fmt + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/panicking.rs:65:14 + 12: panic::main + at ./examples/panic.rs:15:5 + 13: core::ops::function::FnOnce::call_once + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs:251:5 + 14: std::sys_common::backtrace::__rust_begin_short_backtrace + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs:122:18 + 15: std::rt::lang_start::{{closure}} + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:166:18 + 16: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs:286:13 + 17: std::panicking::try::do_call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:483:40 + 18: std::panicking::try + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:447:19 + 19: std::panic::catch_unwind + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs:137:14 + 20: std::rt::lang_start_internal::{{closure}} + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:148:48 + 21: std::panicking::try::do_call + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:483:40 + 22: std::panicking::try + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs:447:19 + 23: std::panic::catch_unwind + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs:137:14 + 24: std::rt::lang_start_internal + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:148:20 + 25: std::rt::lang_start + at /rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs:165:17 + 26: _main +" + +# Original (fmt::Debug) + +ts="2022-10-16T13:58:21.833870Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="Backtrace [{ fn: "std::backtrace_rs::backtrace::libunwind::trace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, { fn: "std::backtrace_rs::backtrace::trace_unsynchronized", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, { fn: "std::backtrace::Backtrace::create", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 333 }, { fn: "std::backtrace::Backtrace::force_capture", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 314 }, { fn: "std_logger::config::log_panic", file: "./src/config.rs", line: 156 }, { fn: "core::ops::function::Fn::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 78 }, { fn: "<alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/alloc/src/boxed.rs", line: 1952 }, { fn: "std::panicking::rust_panic_with_hook", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 692 }, { fn: "std::panicking::begin_panic_handler::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 577 }, { fn: "std::sys_common::backtrace::__rust_end_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 138 }, { fn: "rust_begin_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 575 }, { fn: "core::panicking::panic_fmt", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/panicking.rs", line: 65 }, { fn: "panic::main", file: "./examples/panic.rs", line: 15 }, { fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }, { fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }, { fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }, { fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, { fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }, { fn: "_main" }]" + +# Original (fmt::Debug alternative) + +ts="2022-10-16T14:09:55.445651Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="[ + [ + { fn: "std::backtrace_rs::backtrace::libunwind::trace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, + { fn: "std::backtrace_rs::backtrace::trace_unsynchronized", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 }, + { fn: "std::backtrace::Backtrace::create", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 333 }, + ], + [ + { fn: "std::backtrace::Backtrace::force_capture", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/backtrace.rs", line: 314 }, + ], + [ + { fn: "std_logger::config::log_panic", file: "./src/config.rs", line: 180 }, + ], + [ + { fn: "core::ops::function::Fn::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 78 }, + ], + [ + { fn: "<alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/alloc/src/boxed.rs", line: 1952 }, + { fn: "std::panicking::rust_panic_with_hook", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 692 }, + ], + [ + { fn: "std::panicking::begin_panic_handler::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 577 }, + ], + [ + { fn: "std::sys_common::backtrace::__rust_end_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 138 }, + ], + [ + { fn: "rust_begin_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 575 }, + ], + [ + { fn: "core::panicking::panic_fmt", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/panicking.rs", line: 65 }, + ], + [ + { fn: "panic::main", file: "./examples/panic.rs", line: 15 }, + ], + [ + { fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }, + ], + [ + { fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }, + ], + [ + { fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }, + ], + [ + { fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + ], + [ + { fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }, + ], + [ + { fn: "_main" }, + ], +]" + + +# Trimmed (fmt::Debug) + +ts="2022-10-16T14:09:02.462919Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="[[{ fn: "panic::main", file: "./examples/panic.rs", line: 15 }], [{ fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }], [{ fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }], [{ fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }], [{ fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }], [{ fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }], [{ fn: "_main" }]]" + +# Trimmer (fmt::Debug alternative) + +ts="2022-10-16T14:10:34.497084Z" lvl="ERROR" msg="thread 'main' panicked at 'oops', examples/panic.rs:15:5" target="panic" module="" backtrace="[ + [ + { fn: "panic::main", file: "./examples/panic.rs", line: 15 }, + ], + [ + { fn: "core::ops::function::FnOnce::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 251 }, + ], + [ + { fn: "std::sys_common::backtrace::__rust_begin_short_backtrace", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/sys_common/backtrace.rs", line: 122 }, + ], + [ + { fn: "std::rt::lang_start::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 166 }, + ], + [ + { fn: "core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/core/src/ops/function.rs", line: 286 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal::{{closure}}", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + { fn: "std::panicking::try::do_call", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 483 }, + { fn: "std::panicking::try", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panicking.rs", line: 447 }, + { fn: "std::panic::catch_unwind", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/panic.rs", line: 137 }, + { fn: "std::rt::lang_start_internal", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 148 }, + ], + [ + { fn: "std::rt::lang_start", file: "/rustc/b8c35ca26b191bb9a9ac669a4b3f4d3d52d97fb1/library/std/src/rt.rs", line: 165 }, + ], + [ + { fn: "_main" }, + ], +]" -- 2.37.3
The text was updated successfully, but these errors were encountered:
Also see my comment in the rustc tracking issue: rust-lang/rust#79676 (comment).
Sorry, something went wrong.
No branches or pull requests
A patch that works, but doesn't allow for pretty formatting (as
BacktraceFrame
doesn't allow access to it's fields).Formats:
The text was updated successfully, but these errors were encountered: