class UntilThreadController
Defined at line 38 of file ../../src/developer/debug/zxdb/client/until_thread_controller.h
The "until" thread controller continues until a given instruction is reached. It sets a
breakpoint at the desired location(s) and continues execution.
Setting the breakpoint may fail in several different ways. In the simplest case the location
to run to isn't found (symbol resolution failure). The breakpoint could also fail to be set.
In addition to weird errors and race conditions that could cause the breakpoint set to fail, this
can happen if the breakpoint location is in unwritable memory, like the vDSO (this can happen
during certain stepping operations involving syscalls).
These errors are indicated by the callback given to InitWithThread() which can be issued
asynchronously. Callers should be sure to handle these errors as otherwise program execution will
continue and the user's stepping location can be lost!
Public Methods
void UntilThreadController (std::vector<InputLocation> locations, fit::deferred_callback on_done)
Runs a thread until the given location. The location will only be matched if the stack base
pointer position of the location is greater than end_sp this means that the stack has grown up
to a higher frame. When end_bp is 0, every stack pointer will be larger and it will always
trigger. Supporting the stack pointer allows this class to be used for stack-aware options (as
a subset of "finish" for example).
Defined at line 24 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
void UntilThreadController (std::vector<InputLocation> locations, FrameFingerprint newest_frame, FrameComparison cmp, fit::deferred_callback on_done)
Runs to the given location until the current frame compares to the given frame according to the
given comparator. This allows stepping backward in the call stack.
Defined at line 28 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
void ~UntilThreadController ()
Defined at line 37 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
void InitWithThread (Thread * thread, fit::callback<void (const Err &)> cb)
ThreadController implementation:
Defined at line 42 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
const char * GetName ()
Defined at line 69 of file ../../src/developer/debug/zxdb/client/until_thread_controller.h
ContinueOp GetContinueOp ()
Defined at line 94 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
StopOp OnThreadStop (debug_ipc::ExceptionType stop_type, const std::vector<fxl::WeakPtr<Breakpoint>> & hit_breakpoints)
Defined at line 100 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
std::vector<const BreakpointLocation *> GetLocations ()
Returns the resolved locations where this thread controller is running to. When active, this
will always contain at least one element (InitWithThread() will report error if there are no
addresses resolved).
Defined at line 175 of file ../../src/developer/debug/zxdb/client/until_thread_controller.cc
Enumerations
enum FrameComparison
| Name | Value |
|---|---|
| kRunUntilOlderFrame | 0 |
| kRunUntilEqualOrOlderFrame | 1 |
Defined at line 40 of file ../../src/developer/debug/zxdb/client/until_thread_controller.h