Base class for debuggers.
This defines the interface and common operations for debuggers.
Definition at line 19 of file Debugger/Base.h.
|
virtual bool | isAttached ()=0 |
| Tests whether this debugger is attached to a specimen. More...
|
|
virtual void | detach ()=0 |
| Detach from a specimen. More...
|
|
virtual void | terminate ()=0 |
| Terminate the specimen. More...
|
|
virtual std::vector< ThreadId > | threadIds ()=0 |
| List of subordinate threads. More...
|
|
virtual void | setBreakPoint (const AddressInterval &)=0 |
| Set breakpoints. More...
|
|
virtual void | clearBreakPoint (const AddressInterval &)=0 |
| Remove breakpoints. More...
|
|
virtual void | clearBreakPoints ()=0 |
| Remove all breakpoints. More...
|
|
virtual void | singleStep (ThreadId)=0 |
| Execute one machine instruction. More...
|
|
virtual void | runToBreakPoint (ThreadId)=0 |
| Run until the next breakpoint is reached. More...
|
|
virtual Sawyer::Container::BitVector | readRegister (ThreadId, RegisterDescriptor)=0 |
| Read subordinate register. More...
|
|
virtual size_t | readMemory (rose_addr_t va, size_t nBytes, uint8_t *buffer)=0 |
| Read subordinate memory. More...
|
|
virtual std::vector< uint8_t > | readMemory (rose_addr_t va, size_t nBytes)=0 |
| Read subordinate memory as an array of bytes. More...
|
|
virtual Sawyer::Container::BitVector | readMemory (rose_addr_t va, size_t nBytes, ByteOrder::Endianness order)=0 |
| Read subordinate memory as a bit vector. More...
|
|
virtual size_t | writeMemory (rose_addr_t va, size_t nBytes, const uint8_t *bytes)=0 |
| Writes some bytes to subordinate memory. More...
|
|
template<typename T > |
void | writeMemory (rose_addr_t va, const T &value) |
| Write subordinate memory. More...
|
|
virtual std::string | readCString (rose_addr_t va, size_t maxBytes=UNLIMITED) |
| Read C-style NUL-terminated string from subordinate. More...
|
|
virtual bool | isTerminated ()=0 |
| Returns true if the subordinate terminated. More...
|
|
virtual std::string | howTerminated ()=0 |
| String describing how the subordinate process terminated. More...
|
|
virtual RegisterDictionaryPtr | registerDictionary () |
| Available registers. More...
|
|
virtual Disassembler::BasePtr | disassembler () |
| Disassembler. More...
|
|
virtual Sawyer::Container::Trace< rose_addr_t > | trace () |
| Run the program and return an execution trace. More...
|
|
template<class Filter > |
Sawyer::Container::Trace< rose_addr_t > | trace (ThreadId tid, Filter &filter) |
| Run the program and return an execution trace. More...
|
|
|
virtual void | executionAddress (ThreadId, rose_addr_t) |
| Execution address. More...
|
|
virtual rose_addr_t | executionAddress (ThreadId) |
| Execution address. More...
|
|
|
virtual void | writeRegister (ThreadId, RegisterDescriptor, const Sawyer::Container::BitVector &)=0 |
| Write subordinate register.
|
|
virtual void | writeRegister (ThreadId, RegisterDescriptor, uint64_t value)=0 |
| Write subordinate register.
|
|
| SharedObject () |
| Default constructor. More...
|
|
| SharedObject (const SharedObject &) |
| Copy constructor. More...
|
|
virtual | ~SharedObject () |
| Virtual destructor. More...
|
|
SharedObject & | operator= (const SharedObject &) |
| Assignment. More...
|
|
Run the program and return an execution trace.
At each step along the execution, the filter
functor is invoked and passed the current execution address. The return value of type FilterAction from the filter functor controls whether the address is appended to the trace and whether the tracing should continue.
Definition at line 162 of file Debugger/Base.h.
References Sawyer::Container::Trace< T, IndexTag >::append(), executionAddress(), Sawyer::BitFlags< E, V >::isClear(), Sawyer::BitFlags< E, V >::isSet(), isTerminated(), Rose::BinaryAnalysis::Debugger::REJECT, singleStep(), and Rose::BinaryAnalysis::Debugger::STOP.