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