about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorJane Lusby <jlusby@yaah.dev>2020-02-10 17:28:04 -0800
committerJane Lusby <jlusby@yaah.dev>2020-02-10 17:28:04 -0800
commit230ed3ea75a18984a0e34fb99dae69e8aa779c64 (patch)
tree3676eb14345a2aacdc1e4ac99908b4edbbe7c09b /src/libstd
parent70c91330143b7979ec2847d0016ece75053e5d39 (diff)
downloadrust-230ed3ea75a18984a0e34fb99dae69e8aa779c64.tar.gz
rust-230ed3ea75a18984a0e34fb99dae69e8aa779c64.zip
use debug_map and skip empty frames
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/backtrace.rs15
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!();
     }
 }