fn show_stackframe()

in reverie-ptrace/src/debug.rs [26:49]


fn show_stackframe(tid: Pid, stack: u64, top_size: usize, bot_size: usize) -> String {
    let mut text = String::new();
    if stack < top_size as u64 {
        return text;
    }
    let sp_top = stack - top_size as u64;
    let sp_bot = stack + bot_size as u64;
    let mut sp = sp_top;

    while sp <= sp_bot {
        match ptrace::read(tid.into(), sp as ptrace::AddressType) {
            Err(_) => break,
            Ok(x) => {
                if sp == stack {
                    text += &format!(" => {:12x}: {:16x}\n", sp, x);
                } else {
                    text += &format!("    {:12x}: {:16x}\n", sp, x);
                }
            }
        }
        sp += 8;
    }
    text
}