Milestone4
This commit is contained in:
parent
acdea334d5
commit
710b7f10fa
@ -1,8 +1,8 @@
|
|||||||
use crate::debugger_command::DebuggerCommand;
|
use crate::debugger_command::DebuggerCommand;
|
||||||
|
use crate::dwarf_data::{DwarfData, Error as DwarfError};
|
||||||
use crate::inferior::{Inferior, Status};
|
use crate::inferior::{Inferior, Status};
|
||||||
use rustyline::error::ReadlineError;
|
use rustyline::error::ReadlineError;
|
||||||
use rustyline::Editor;
|
use rustyline::Editor;
|
||||||
use crate::dwarf_data::{DwarfData, Error as DwarfError};
|
|
||||||
|
|
||||||
pub struct Debugger {
|
pub struct Debugger {
|
||||||
target: String,
|
target: String,
|
||||||
@ -73,12 +73,20 @@ impl Debugger {
|
|||||||
self.inferior = None
|
self.inferior = None
|
||||||
}
|
}
|
||||||
Status::Signaled(_) => (),
|
Status::Signaled(_) => (),
|
||||||
Status::Stopped(_signal, _) => {
|
Status::Stopped(_signal, _rip) => {
|
||||||
println!("Child stopped (signal {})", _signal);
|
println!("Child stopped (signal {})", _signal);
|
||||||
|
let file_line = self.debug_data.get_line_from_addr(_rip).unwrap_or(
|
||||||
|
crate::dwarf_data::Line {
|
||||||
|
file: String::from("Unknown"),
|
||||||
|
number: 0,
|
||||||
|
address: 0,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
println!("Stopped at {}[rip={:#x}]", file_line, _rip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
eprintln!("Error running(continue) subprocess");
|
eprintln!("Error running subprocess");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("Error starting subprocess");
|
println!("Error starting subprocess");
|
||||||
@ -103,16 +111,28 @@ impl Debugger {
|
|||||||
self.inferior = None
|
self.inferior = None
|
||||||
}
|
}
|
||||||
Status::Signaled(_) => (),
|
Status::Signaled(_) => (),
|
||||||
Status::Stopped(_signal, _) => {
|
Status::Stopped(_signal, _rip) => {
|
||||||
println!("Child stopped (signal {})", _signal);
|
println!("Child stopped (signal {})", _signal);
|
||||||
|
let file_line = self.debug_data.get_line_from_addr(_rip).unwrap_or(
|
||||||
|
crate::dwarf_data::Line {
|
||||||
|
file: String::from("Unknown"),
|
||||||
|
number: 0,
|
||||||
|
address: 0,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
println!("Stopped at {}[rip={:#x}]", file_line, _rip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
eprintln!("Error running(continue) subprocess");
|
eprintln!("Error continuing subprocess");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DebuggerCommand::Backtrace => {
|
DebuggerCommand::Backtrace => {
|
||||||
let res = self.inferior.as_ref().unwrap().print_backtrace(&self.debug_data);
|
let res = self
|
||||||
|
.inferior
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.print_backtrace(&self.debug_data);
|
||||||
if let Err(res) = res {
|
if let Err(res) = res {
|
||||||
eprintln!("Error backtracing: {}", res);
|
eprintln!("Error backtracing: {}", res);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user