diff options
| author | Jane Lusby <jlusby@yaah.dev> | 2020-02-10 17:28:04 -0800 |
|---|---|---|
| committer | Jane Lusby <jlusby@yaah.dev> | 2020-02-10 17:28:04 -0800 |
| commit | 230ed3ea75a18984a0e34fb99dae69e8aa779c64 (patch) | |
| tree | 3676eb14345a2aacdc1e4ac99908b4edbbe7c09b /src/libstd | |
| parent | 70c91330143b7979ec2847d0016ece75053e5d39 (diff) | |
| download | rust-230ed3ea75a18984a0e34fb99dae69e8aa779c64.tar.gz rust-230ed3ea75a18984a0e34fb99dae69e8aa779c64.zip | |
use debug_map and skip empty frames
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/backtrace.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/libstd/backtrace.rs b/src/libstd/backtrace.rs index d5a7d6b8a94..d481f227db7 100644 --- a/src/libstd/backtrace.rs +++ b/src/libstd/backtrace.rs @@ -173,6 +173,10 @@ impl fmt::Debug for Backtrace { let mut dbg = fmt.debug_list(); for frame in &capture.frames { + if frame.frame.ip().is_null() { + continue; + } + dbg.entries(&frame.symbols); } @@ -182,20 +186,20 @@ impl fmt::Debug for Backtrace { impl fmt::Debug for BacktraceSymbol { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - let mut dbg = fmt.debug_struct(""); + let mut dbg = fmt.debug_map(); if let Some(fn_name) = self.name.as_ref().map(|b| backtrace::SymbolName::new(b)) { - dbg.field("fn", &format_args!("\"{}\"", fn_name)); + dbg.entry(&"fn", &format_args!("\"{}\"", fn_name)); } else { - dbg.field("fn", &"<unknown>"); + dbg.entry(&"fn", &"<unknown>"); } if let Some(fname) = self.filename.as_ref() { - dbg.field("file", fname); + dbg.entry(&"file", fname); } if let Some(line) = self.lineno.as_ref() { - dbg.field("line", line); + dbg.entry(&"line", line); } dbg.finish() @@ -415,6 +419,7 @@ mod tests { eprintln!("captured: {:?}", bt); eprintln!("display print: {}", bt); eprintln!("resolved: {:?}", bt); + eprintln!("resolved alt: {:#?}", bt); unimplemented!(); } } |
