Show function name in panic stack trace

This commit is contained in:
Zejun Zhao 2025-08-04 00:25:53 +08:00 committed by Jianfeng Jiang
parent ab5448619c
commit b76d61d268
1 changed files with 5 additions and 2 deletions

View File

@ -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());
}
}
}