blob: 5a0dfea15be57c0a8bc7ace327fc5120baea08ba [file] [log] [blame]
#[test]
fn all_frames_have_symbols() {
println!("{:?}", backtrace::Backtrace::new());
let mut missing_symbols = 0;
let mut has_symbols = 0;
backtrace::trace(|frame| {
let mut any = false;
backtrace::resolve_frame(frame, |sym| {
if sym.name().is_some() {
any = true;
}
});
if any {
has_symbols += 1;
} else if !frame.ip().is_null() {
missing_symbols += 1;
}
true
});
// FIXME(#346) currently on MinGW we can't symbolize kernel32.dll and other
// system libraries, which means we miss the last few symbols.
if cfg!(windows) && cfg!(target_env = "gnu") {
assert!(missing_symbols < has_symbols && has_symbols > 4);
} else {
assert_eq!(missing_symbols, 0);
}
}
#[test]
fn all_frames_have_module_base_address() {
let mut missing_base_addresses = 0;
backtrace::trace(|frame| {
if frame.module_base_address().is_none() {
missing_base_addresses += 1;
}
true
});
if cfg!(windows) {
assert_eq!(missing_base_addresses, 0);
}
}