Add an API to unwind from a hand-called expression.
This is just an SB API way of doing "thread return -x". <rdar://problem/27110360> llvm-svn: 274822
This commit is contained in:
parent
0160063aeb
commit
4ac8e93a4e
|
@ -150,6 +150,9 @@ public:
|
|||
SBError
|
||||
ReturnFromFrame (SBFrame &frame, SBValue &return_value);
|
||||
|
||||
SBError
|
||||
UnwindInnermostExpression();
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/// LLDB currently supports process centric debugging which means when any
|
||||
/// thread in a process stops, all other threads are stopped. The Suspend()
|
||||
|
|
|
@ -259,6 +259,14 @@ public:
|
|||
SBError
|
||||
ReturnFromFrame (SBFrame &frame, SBValue &return_value);
|
||||
|
||||
%feature("autodoc", "
|
||||
Unwind the stack frames from the innermost expression evaluation.
|
||||
This API is equivalent to 'thread return -x'.
|
||||
") UnwindInnermostExpression;
|
||||
|
||||
SBError
|
||||
UnwindInnermostExpression();
|
||||
|
||||
%feature("docstring", "
|
||||
//--------------------------------------------------------------------------
|
||||
/// LLDB currently supports process centric debugging which means when any
|
||||
|
|
|
@ -1249,6 +1249,31 @@ SBThread::ReturnFromFrame (SBFrame &frame, SBValue &return_value)
|
|||
return sb_error;
|
||||
}
|
||||
|
||||
SBError
|
||||
SBThread::UnwindInnermostExpression()
|
||||
{
|
||||
SBError sb_error;
|
||||
|
||||
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
|
||||
|
||||
std::unique_lock<std::recursive_mutex> lock;
|
||||
ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
|
||||
|
||||
if (log)
|
||||
log->Printf ("SBThread(%p)::UnwindExpressionEvaluation",
|
||||
static_cast<void*>(exe_ctx.GetThreadPtr()));
|
||||
|
||||
if (exe_ctx.HasThreadScope())
|
||||
{
|
||||
Thread *thread = exe_ctx.GetThreadPtr();
|
||||
sb_error.SetError (thread->UnwindInnermostExpression());
|
||||
if (sb_error.Success())
|
||||
thread->SetSelectedFrameByIndex(0, false);
|
||||
}
|
||||
|
||||
return sb_error;
|
||||
|
||||
}
|
||||
|
||||
bool
|
||||
SBThread::Suspend()
|
||||
|
|
Loading…
Reference in New Issue