From b76d61d2682f2ceb3ee9517895fbce1aef92b02c Mon Sep 17 00:00:00 2001 From: Zejun Zhao Date: Mon, 4 Aug 2025 00:25:53 +0800 Subject: [PATCH] Show function name in panic stack trace --- osdk/src/util.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/osdk/src/util.rs b/osdk/src/util.rs index 4a00b3d1e..9e89feba3 100644 --- a/osdk/src/util.rs +++ b/osdk/src/util.rs @@ -281,7 +281,7 @@ pub fn trace_panic_from_log(qemu_log: File, bin_path: PathBuf) { let exe = bin_path.to_string_lossy(); let mut addr2line = new_command_checked_exists("addr2line"); - addr2line.args(["-e", &exe]); + addr2line.args(["-e", &exe, "-f", "-C"]); let mut addr2line_proc = addr2line .stdin(std::process::Stdio::piped()) .stdout(std::process::Stdio::piped()) @@ -299,11 +299,14 @@ pub fn trace_panic_from_log(qemu_log: File, bin_path: PathBuf) { let mut stdin = addr2line_proc.stdin.as_ref().unwrap(); stdin.write_all(pc.as_bytes()).unwrap(); stdin.write_all(b"\n").unwrap(); + let mut function = String::new(); let mut line = String::new(); let mut stdout = BufReader::new(addr2line_proc.stdout.as_mut().unwrap()); + stdout.read_line(&mut function).unwrap(); stdout.read_line(&mut line).unwrap(); stack_num += 1; - println!("({: >3}) {}", stack_num, line.trim()); + println!("({: >3}) {}", stack_num, function.trim()); + println!(" at {}", line.trim()); } } }