当前位置: 首页>>代码示例>>C++>>正文


C++ DataExtractor::GetAddress方法代码示例

本文整理汇总了C++中DataExtractor::GetAddress方法的典型用法代码示例。如果您正苦于以下问题:C++ DataExtractor::GetAddress方法的具体用法?C++ DataExtractor::GetAddress怎么用?C++ DataExtractor::GetAddress使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DataExtractor的用法示例。


在下文中一共展示了DataExtractor::GetAddress方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: process_sp

bool
ThreadPlanCallFunction::BreakpointsExplainStop()
{
    StopInfoSP stop_info_sp = GetPrivateStopInfo ();
    
    if (stop_info_sp->GetStopReason() != eStopReasonBreakpoint)
        return false;

    if (m_trap_exceptions)
    {
        if ((m_cxx_language_runtime &&
                m_cxx_language_runtime->ExceptionBreakpointsExplainStop(stop_info_sp))
           ||(m_objc_language_runtime &&
                m_objc_language_runtime->ExceptionBreakpointsExplainStop(stop_info_sp)))
        {
            Log *log(lldb_private::GetLogIfAnyCategoriesSet (LIBLLDB_LOG_STEP));
            if (log)
                log->Printf ("ThreadPlanCallFunction::BreakpointsExplainStop - Hit an exception breakpoint, setting plan complete.");
            
            SetPlanComplete(false);
            
            // If the user has set the ObjC language breakpoint, it would normally get priority over our internal
            // catcher breakpoint, but in this case we can't let that happen, so force the ShouldStop here.
            stop_info_sp->OverrideShouldStop (true);
            return true;
        }
    }
    if (m_error_backstop_bp_sp)
    {
        ProcessSP process_sp (m_thread.CalculateProcess());
        if (process_sp)
        {
            uint64_t break_site_id = stop_info_sp->GetValue();
            if (process_sp->GetBreakpointSiteList().BreakpointSiteContainsBreakpoint (break_site_id,
                                                                                      m_error_backstop_bp_sp->GetID()))
            {
                // Our expression threw an uncaught exception.  That will happen in REPL & Playground, though not in
                // the regular expression parser.  In that case, we should fetch the actual return value from the
                // argument passed to this function, and set that as the return value.
                SetPlanComplete(true);
                StackFrameSP frame_sp = m_thread.GetStackFrameAtIndex(0);
                PersistentExpressionState *persistent_state = GetTarget().GetPersistentExpressionStateForLanguage(eLanguageTypeSwift);
                const bool is_error = true;
                ConstString persistent_variable_name (persistent_state->GetNextPersistentVariableName(is_error));
                m_return_valobj_sp = SwiftLanguageRuntime::CalculateErrorValueFromFirstArgument(frame_sp,
                                                                                                persistent_variable_name);
                
                DataExtractor data;
                Error data_error;
                size_t data_size = m_return_valobj_sp->GetStaticValue()->GetData(data, data_error);
                
                if (data_size == data.GetAddressByteSize())
                {
                    lldb::offset_t offset = 0;
                    lldb::addr_t addr = data.GetAddress(&offset);
                    
                    SwiftLanguageRuntime::RegisterGlobalError(GetTarget(), persistent_variable_name, addr);
                }
                
                m_hit_error_backstop = true;
                return true;
            }
        }
    }
    
    return false;
}
开发者ID:macjab,项目名称:swift-lldb,代码行数:67,代码来源:ThreadPlanCallFunction.cpp


注:本文中的DataExtractor::GetAddress方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。