SBBlock SBFrame::GetFrameBlock () const { SBBlock sb_block; Mutex::Locker api_locker; ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker); StackFrame *frame = NULL; Target *target = exe_ctx.GetTargetPtr(); LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); Process *process = exe_ctx.GetProcessPtr(); if (target && process) { Process::StopLocker stop_locker; if (stop_locker.TryLock(&process->GetRunLock())) { frame = exe_ctx.GetFramePtr(); if (frame) { sb_block.SetPtr(frame->GetFrameBlock ()); } else { if (log) log->Printf ("SBFrame::GetFrameBlock () => error: could not reconstruct frame object for this SBFrame."); } } else { if (log) log->Printf ("SBFrame::GetFrameBlock () => error: process is running"); } } if (log) log->Printf ("SBFrame(%p)::GetFrameBlock () => SBBlock(%p)", frame, sb_block.GetPtr()); return sb_block; }