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


C++ CMICMDBASE_GETOPTION函数代码示例

本文整理汇总了C++中CMICMDBASE_GETOPTION函数的典型用法代码示例。如果您正苦于以下问题:C++ CMICMDBASE_GETOPTION函数的具体用法?C++ CMICMDBASE_GETOPTION怎么用?C++ CMICMDBASE_GETOPTION使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


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

示例1: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command does work in this function.
//			The command is likely to communicate with the LLDB SBDebugger in here.
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdBreakCondition::Execute( void )
{
	CMICMDBASE_GETOPTION( pArgNumber, Number, m_constStrArgNamedNumber );
	CMICMDBASE_GETOPTION( pArgExpr, String, m_constStrArgNamedExpr );					

	m_nBrkPtId = pArgNumber->GetValue();
	m_strBrkPtExpr = pArgExpr->GetValue();
	m_strBrkPtExpr += GetRestOfExpressionNotSurroundedInQuotes();

	CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
	lldb::SBBreakpoint brkPt = rSessionInfo.m_lldbTarget.FindBreakpointByID( static_cast< lldb::break_id_t >( m_nBrkPtId ) );
	if( brkPt.IsValid() )
	{
		brkPt.SetCondition( m_strBrkPtExpr.c_str() );

		CMICmnLLDBDebugSessionInfo::SBrkPtInfo sBrkPtInfo;
		if( !rSessionInfo.RecordBrkPtInfoGet( m_nBrkPtId, sBrkPtInfo ) )
		{
			SetError( CMIUtilString::Format( MIRSRC( IDS_CMD_ERR_BRKPT_INFO_OBJ_NOT_FOUND ), m_cmdData.strMiCmd.c_str(), m_nBrkPtId ) );
			return MIstatus::failure;
		}
		sBrkPtInfo.m_strCondition = m_strBrkPtExpr;
		rSessionInfo.RecordBrkPtInfo( m_nBrkPtId, sBrkPtInfo );
	}
	else
	{
		const CMIUtilString strBrkPtId( CMIUtilString::Format( "%d", m_nBrkPtId ) );
		SetError( CMIUtilString::Format( MIRSRC( IDS_CMD_ERR_BRKPT_INVALID ), m_cmdData.strMiCmd.c_str(), strBrkPtId.c_str() ) );
		return MIstatus::failure;
	}

	return MIstatus::success;
}
开发者ID:Jean-Daniel,项目名称:lldb,代码行数:42,代码来源:MICmdCmdBreak.cpp

示例2: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this function.
//          The command is likely to communicate with the LLDB SBDebugger in here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool
CMICmdCmdStackListLocals::Execute()
{
    CMICMDBASE_GETOPTION(pArgThread, OptionLong, m_constStrArgThread);
    CMICMDBASE_GETOPTION(pArgFrame, OptionLong, m_constStrArgFrame);
    CMICMDBASE_GETOPTION(pArgPrintValues, PrintValues, m_constStrArgPrintValues);

    // Retrieve the --thread option's thread ID (only 1)
    MIuint64 nThreadId = UINT64_MAX;
    if (pArgThread->GetFound())
    {
        if (!pArgThread->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nThreadId))
        {
            SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), m_cmdData.strMiCmd.c_str(), m_constStrArgThread.c_str()));
            return MIstatus::failure;
        }
    }

    MIuint64 nFrame = UINT64_MAX;
    if (pArgFrame->GetFound())
    {
        if (!pArgFrame->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nFrame))
        {
            SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), m_cmdData.strMiCmd.c_str(), m_constStrArgFrame.c_str()));
            return MIstatus::failure;
        }
    }

    const CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e eVarInfoFormat = static_cast<CMICmnLLDBDebugSessionInfo::VariableInfoFormat_e>(pArgPrintValues->GetValue());

    CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
    lldb::SBProcess sbProcess = rSessionInfo.GetProcess();
    lldb::SBThread thread = (nThreadId != UINT64_MAX) ? sbProcess.GetThreadByIndexID(nThreadId) : sbProcess.GetSelectedThread();
    m_bThreadInvalid = !thread.IsValid();
    if (m_bThreadInvalid)
        return MIstatus::success;

    const lldb::StopReason eStopReason = thread.GetStopReason();
    if ((eStopReason == lldb::eStopReasonNone) || (eStopReason == lldb::eStopReasonInvalid))
    {
        m_bThreadInvalid = true;
        return MIstatus::success;
    }

    lldb::SBFrame frame = (nFrame != UINT64_MAX) ? thread.GetFrameAtIndex(nFrame) : thread.GetSelectedFrame();

    CMICmnMIValueList miValueList(true);
    const MIuint maskVarTypes = CMICmnLLDBDebugSessionInfo::eVariableType_Locals;
    if (!rSessionInfo.MIResponseFormVariableInfo(frame, maskVarTypes, eVarInfoFormat, miValueList))
        return MIstatus::failure;

    m_miValueList = miValueList;

    return MIstatus::success;
}
开发者ID:JuliaLang,项目名称:lldb,代码行数:64,代码来源:MICmdCmdStack.cpp

示例3: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command does work in this function.
//			The command is likely to communicate with the LLDB SBDebugger in here.
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdInterpreterExec::Execute( void )
{
	CMICMDBASE_GETOPTION( pArgInterpreter, String, m_constStrArgNamedInterpreter );
	CMICMDBASE_GETOPTION( pArgCommand, String, m_constStrArgNamedCommand );
	const CMIUtilString & rStrInterpreter( pArgInterpreter->GetValue() );
	const CMIUtilString & rStrCommand( pArgCommand->GetValue() );
	const CMIUtilString strCmd( CMIUtilString::Format( "%s %s", rStrInterpreter.c_str(), rStrCommand.c_str() ) );
	CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
	const lldb::ReturnStatus rtn = rSessionInfo.m_rLldbDebugger.GetCommandInterpreter().HandleCommand( strCmd.c_str(), m_lldbResult, true ); MIunused( rtn );
	
	return MIstatus::success;
}
开发者ID:Jean-Daniel,项目名称:lldb,代码行数:21,代码来源:MICmdCmdMiscellanous.cpp

示例4: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this function.
//          The command is likely to communicate with the LLDB SBDebugger in here.
//          Synopsis: -target-attach file
//          Ref: http://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Target-Manipulation.html#GDB_002fMI-Target-Manipulation
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool
CMICmdCmdTargetAttach::Execute()
{
    CMICMDBASE_GETOPTION(pArgPid, Number, m_constStrArgPid);
    CMICMDBASE_GETOPTION(pArgFile, OptionShort, m_constStrArgNamedFile);
    CMICMDBASE_GETOPTION(pArgWaitFor, OptionLong, m_constStrArgWaitFor);
    
    CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
    
    // If the current target is invalid, create one
    lldb::SBTarget target = rSessionInfo.GetTarget();
    if (!target.IsValid())
    {
        target = rSessionInfo.GetDebugger().CreateTarget(NULL);
        if (!target.IsValid())
        {
            SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_INVALID_TARGET_CURRENT), m_cmdData.strMiCmd.c_str()));
            return MIstatus::failure;
        }
    }

    lldb::SBError error;
    lldb::SBListener listener;
    if (pArgPid->GetFound() && pArgPid->GetValid())
    {
        lldb::pid_t pid;
        pid = pArgPid->GetValue();
        target.AttachToProcessWithID(listener, pid, error);
    }
    else if (pArgFile->GetFound() && pArgFile->GetValid())
    {
        bool bWaitFor = (pArgWaitFor->GetFound());
        CMIUtilString file;
        pArgFile->GetExpectedOption<CMICmdArgValString>(file);
        target.AttachToProcessWithName(listener, file.c_str(), bWaitFor, error);
    }
    else
    {
        SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_ATTACH_BAD_ARGS), m_cmdData.strMiCmd.c_str()));
        return MIstatus::failure;
    }

    lldb::SBStream errMsg;
    if (error.Fail())
    {
        SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_ATTACH_FAILED), m_cmdData.strMiCmd.c_str(), errMsg.GetData()));
        return MIstatus::failure;
    }
    
    return MIstatus::success;
}
开发者ID:2asoft,项目名称:freebsd,代码行数:62,代码来源:MICmdCmdTarget.cpp

示例5: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command does work in this function.
//			The command is likely to communicate with the LLDB SBDebugger in here.
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdStackListArguments::Execute( void )
{
	CMICMDBASE_GETOPTION( pArgThread, OptionLong, m_constStrArgThread );
	CMICMDBASE_GETOPTION( pArgPrintValues, Number, m_constStrArgPrintValues );

	// Retrieve the --thread option's thread ID (only 1)
	MIuint64 nThreadId = UINT64_MAX;
	if( pArgThread->GetFound() )
	{
		if( !pArgThread->GetExpectedOption< CMICmdArgValNumber, MIuint64 >( nThreadId ) )
		{
			SetError( CMIUtilString::Format( MIRSRC( IDS_CMD_ERR_OPTION_NOT_FOUND ), m_cmdData.strMiCmd.c_str(), m_constStrArgThread.c_str() ) );
			return MIstatus::failure;
		}
	}

	CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
	lldb::SBProcess & rProcess = rSessionInfo.m_lldbProcess;
	lldb::SBThread thread = (nThreadId != UINT64_MAX) ? rProcess.GetThreadByIndexID( nThreadId ) : rProcess.GetSelectedThread();
	m_bThreadInvalid = !thread.IsValid();
	if( m_bThreadInvalid )
		return MIstatus::success;

	const lldb::StopReason eStopReason = thread.GetStopReason();
	if( (eStopReason == lldb::eStopReasonNone) || (eStopReason == lldb::eStopReasonInvalid) )
	{
		m_bThreadInvalid = true;
		return MIstatus::success;
	}
	

	const MIuint nFrames = thread.GetNumFrames();
	for( MIuint i = 0; i < nFrames; i++ )
	{
		lldb::SBFrame frame = thread.GetFrameAtIndex( i );
		CMICmnMIValueList miValueList( true );
		const MIuint maskVarTypes = 0x1000;
		if( !rSessionInfo.MIResponseFormVariableInfo3( frame, maskVarTypes, miValueList ) )
			return MIstatus::failure;
		const CMICmnMIValueConst miValueConst( CMIUtilString::Format( "%d", i ) );
		const CMICmnMIValueResult miValueResult( "level", miValueConst );
		CMICmnMIValueTuple miValueTuple( miValueResult );
		const CMICmnMIValueResult miValueResult2( "args", miValueList );
		miValueTuple.Add( miValueResult2 );
		const CMICmnMIValueResult miValueResult3( "frame", miValueTuple );
		m_miValueList.Add( miValueResult3 );
	}

	return MIstatus::success;
}
开发者ID:jashank,项目名称:freebsd,代码行数:59,代码来源:MICmdCmdStack.cpp

示例6: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this function.
//          The command is likely to communicate with the LLDB SBDebugger in here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool
CMICmdCmdStackListFrames::Execute(void)
{
    CMICMDBASE_GETOPTION(pArgThread, OptionLong, m_constStrArgThread);
    CMICMDBASE_GETOPTION(pArgFrameLow, Number, m_constStrArgFrameLow);
    CMICMDBASE_GETOPTION(pArgFrameHigh, Number, m_constStrArgFrameHigh);

    // Retrieve the --thread option's thread ID (only 1)
    MIuint64 nThreadId = UINT64_MAX;
    if (pArgThread->GetFound() && !pArgThread->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nThreadId))
    {
        SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_OPTION_NOT_FOUND), m_cmdData.strMiCmd.c_str(), m_constStrArgThread.c_str()));
        return MIstatus::failure;
    }

    // Frame low and high options are not mandatory
    MIuint nFrameHigh = pArgFrameHigh->GetFound() ? pArgFrameHigh->GetValue() : UINT32_MAX;
    const MIuint nFrameLow = pArgFrameLow->GetFound() ? pArgFrameLow->GetValue() : 0;

    CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
    lldb::SBProcess sbProcess = rSessionInfo.GetProcess();
    lldb::SBThread thread = (nThreadId != UINT64_MAX) ? sbProcess.GetThreadByIndexID(nThreadId) : sbProcess.GetSelectedThread();
    MIuint nThreadFrames = thread.GetNumFrames();

    // Adjust nThreadFrames for the nFrameHigh argument as we use nFrameHigh+1 in the min calc as the arg
    // is not an index, but a frame id value.
    if (nFrameHigh < UINT32_MAX)
    {
        nFrameHigh++;
        nThreadFrames = (nFrameHigh < nThreadFrames) ? nFrameHigh : nThreadFrames;
    }

    m_nThreadFrames = nThreadFrames;
    if (nThreadFrames == 0)
        return MIstatus::success;

    m_vecMIValueResult.clear();
    for (MIuint nLevel = nFrameLow; nLevel < nThreadFrames; nLevel++)
    {
        CMICmnMIValueTuple miValueTuple;
        if (!rSessionInfo.MIResponseFormFrameInfo(thread, nLevel, miValueTuple))
            return MIstatus::failure;

        const CMICmnMIValueResult miValueResult8("frame", miValueTuple);
        m_vecMIValueResult.push_back(miValueResult8);
    }

    return MIstatus::success;
}
开发者ID:johndpope,项目名称:lldb,代码行数:58,代码来源:MICmdCmdStack.cpp

示例7: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command does work in this function.
//			The command is likely to communicate with the LLDB SBDebugger in here.
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdInterpreterExec::Execute( void )
{
	CMICMDBASE_GETOPTION( pArgInterpreter, String, m_constStrArgNamedInterpreter );
	CMICMDBASE_GETOPTION( pArgCommand, String, m_constStrArgNamedCommand );

	// Handle the interpreter parameter by do nothing on purpose (set to 'handled' in 
	// the arg definition above) 
	const CMIUtilString & rStrInterpreter( pArgInterpreter->GetValue() ); MIunused( rStrInterpreter );

	const CMIUtilString & rStrCommand( pArgCommand->GetValue() );
	CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
	const lldb::ReturnStatus rtn = rSessionInfo.m_rLldbDebugger.GetCommandInterpreter().HandleCommand( rStrCommand.c_str(), m_lldbResult, true ); MIunused( rtn );
	
	return MIstatus::success;
}
开发者ID:chee-z,项目名称:lldb,代码行数:24,代码来源:MICmdCmdMiscellanous.cpp

示例8: CMICMDBASE_GETOPTION

//++
//------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this
// function.
//          The command is likely to communicate with the LLDB SBDebugger in
//          here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool CMICmdCmdBreakDelete::Execute() {
  CMICMDBASE_GETOPTION(pArgBrkPt, ListOfN, m_constStrArgNamedBrkPt);

  // ATM we only handle one break point ID
  MIuint64 nBrk = UINT64_MAX;
  if (!pArgBrkPt->GetExpectedOption<CMICmdArgValNumber, MIuint64>(nBrk)) {
    SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_BRKPT_INVALID),
                                   m_cmdData.strMiCmd.c_str(),
                                   m_constStrArgNamedBrkPt.c_str()));
    return MIstatus::failure;
  }

  CMICmnLLDBDebugSessionInfo &rSessionInfo(
      CMICmnLLDBDebugSessionInfo::Instance());
  const bool bBrkPt = rSessionInfo.GetTarget().BreakpointDelete(
      static_cast<lldb::break_id_t>(nBrk));
  if (!bBrkPt) {
    const CMIUtilString strBrkNum(CMIUtilString::Format("%d", nBrk));
    SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_BRKPT_INVALID),
                                   m_cmdData.strMiCmd.c_str(),
                                   strBrkNum.c_str()));
    return MIstatus::failure;
  }

  return MIstatus::success;
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:38,代码来源:MICmdCmdBreak.cpp

示例9: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this function.
//          The command is likely to communicate with the LLDB SBDebugger in here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Function succeeded.
//          MIstatus::failure - Function failed.
// Throws:  None.
//--
bool
CMICmdCmdExecArguments::Execute()
{
    CMICMDBASE_GETOPTION(pArgArguments, ListOfN, m_constStrArgArguments);

    CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
    lldb::SBTarget sbTarget = rSessionInfo.GetTarget();
    if (!sbTarget.IsValid())
    {
        SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_INVALID_TARGET_CURRENT), m_cmdData.strMiCmd.c_str()));
        return MIstatus::failure;
    }

    lldb::SBLaunchInfo sbLaunchInfo = sbTarget.GetLaunchInfo();
    sbLaunchInfo.SetArguments(NULL, false);

    CMIUtilString strArg;
    size_t nArgIndex = 0;
    while (pArgArguments->GetExpectedOption<CMICmdArgValString, CMIUtilString>(strArg, nArgIndex))
    {
        const char *argv[2] = { strArg.c_str(), NULL };
        sbLaunchInfo.SetArguments(argv, true);
        ++nArgIndex;
    }

    sbTarget.SetLaunchInfo(sbLaunchInfo);

    return MIstatus::success;
}
开发者ID:2asoft,项目名称:freebsd,代码行数:38,代码来源:MICmdCmdExec.cpp

示例10: CMICMDBASE_GETOPTION

//++
//------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this
// function.
//          The command is likely to communicate with the LLDB SBDebugger in
//          here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool CMICmdCmdEnvironmentCd::Execute() {
  CMICMDBASE_GETOPTION(pArgPathDir, File, m_constStrArgNamePathDir);
  const CMIUtilString &strWkDir(pArgPathDir->GetValue());
  CMICmnLLDBDebugger &rDbg(CMICmnLLDBDebugger::Instance());
  lldb::SBDebugger &rLldbDbg = rDbg.GetTheDebugger();
  bool bOk = rLldbDbg.SetCurrentPlatformSDKRoot(strWkDir.c_str());
  if (bOk) {
    const CMIUtilString &rStrKeyWkDir(
        m_rLLDBDebugSessionInfo.m_constStrSharedDataKeyWkDir);
    if (!m_rLLDBDebugSessionInfo.SharedDataAdd<CMIUtilString>(rStrKeyWkDir,
                                                              strWkDir)) {
      SetError(CMIUtilString::Format(MIRSRC(IDS_DBGSESSION_ERR_SHARED_DATA_ADD),
                                     m_cmdData.strMiCmd.c_str(),
                                     rStrKeyWkDir.c_str()));
      bOk = MIstatus::failure;
    }
  } else
    SetError(CMIUtilString::Format(MIRSRC(IDS_CMD_ERR_FNFAILED),
                                   m_cmdData.strMiCmd.c_str(),
                                   "SetCurrentPlatformSDKRoot()"));

  lldb::SBTarget sbTarget = m_rLLDBDebugSessionInfo.GetTarget();
  if (sbTarget.IsValid()) {
    lldb::SBLaunchInfo sbLaunchInfo = sbTarget.GetLaunchInfo();
    sbLaunchInfo.SetWorkingDirectory(strWkDir.c_str());
    sbTarget.SetLaunchInfo(sbLaunchInfo);
  }

  return bOk;
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:42,代码来源:MICmdCmdEnviro.cpp

示例11: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command does work in this function.
//			The command is likely to communicate with the LLDB SBDebugger in here.
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdStackInfoDepth::Execute( void )
{
	CMICMDBASE_GETOPTION( pArgThread, OptionLong, m_constStrArgThread );
	CMICMDBASE_GETOPTION( pArgMaxDepth, Number, m_constStrArgMaxDepth );
	
	// Retrieve the --thread option's thread ID (only 1)
	MIuint64 nThreadId = UINT64_MAX;
	if( !pArgThread->GetExpectedOption< CMICmdArgValNumber, MIuint64 >( nThreadId ) )
	{
		SetError( CMIUtilString::Format( MIRSRC( IDS_CMD_ERR_OPTION_NOT_FOUND ), m_cmdData.strMiCmd.c_str(), m_constStrArgThread.c_str() ) );
		return MIstatus::failure;
	}

	CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
	m_nThreadFrames = rSessionInfo.m_lldbProcess.GetThreadByIndexID( nThreadId ).GetNumFrames();

	return MIstatus::success;
}
开发者ID:stamhe,项目名称:lldb,代码行数:27,代码来源:MICmdCmdStack.cpp

示例12: CMICMDBASE_GETOPTION

//++
//------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this
// function.
//          The command is likely to communicate with the LLDB SBDebugger in
//          here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool CMICmdCmdThreadInfo::Execute() {
  CMICMDBASE_GETOPTION(pArgThreadId, Number, m_constStrArgNamedThreadId);
  MIuint nThreadId = 0;
  if (pArgThreadId->GetFound() && pArgThreadId->GetValid()) {
    m_bSingleThread = true;
    nThreadId = static_cast<MIuint>(pArgThreadId->GetValue());
  }

  CMICmnLLDBDebugSessionInfo &rSessionInfo(
      CMICmnLLDBDebugSessionInfo::Instance());
  lldb::SBProcess sbProcess = rSessionInfo.GetProcess();
  lldb::SBThread thread = sbProcess.GetSelectedThread();

  if (m_bSingleThread) {
    thread = sbProcess.GetThreadByIndexID(nThreadId);
    m_bThreadInvalid = !thread.IsValid();
    if (m_bThreadInvalid)
      return MIstatus::success;

    CMICmnMIValueTuple miTuple;
    if (!rSessionInfo.MIResponseFormThreadInfo(
            m_cmdData, thread,
            CMICmnLLDBDebugSessionInfo::eThreadInfoFormat_AllFrames, miTuple))
      return MIstatus::failure;

    m_miValueTupleThread = miTuple;

    return MIstatus::success;
  }

  // Multiple threads
  m_vecMIValueTuple.clear();
  const MIuint nThreads = sbProcess.GetNumThreads();
  for (MIuint i = 0; i < nThreads; i++) {
    lldb::SBThread thread = sbProcess.GetThreadAtIndex(i);
    if (thread.IsValid()) {
      CMICmnMIValueTuple miTuple;
      if (!rSessionInfo.MIResponseFormThreadInfo(
              m_cmdData, thread,
              CMICmnLLDBDebugSessionInfo::eThreadInfoFormat_AllFrames, miTuple))
        return MIstatus::failure;

      m_vecMIValueTuple.push_back(miTuple);
    }
  }

  // -thread-info with multiple threads ends with the current thread id if any
  if (thread.IsValid()) {
    const CMIUtilString strId(CMIUtilString::Format("%d", thread.GetIndexID()));
    CMICmnMIValueConst miValueCurrThreadId(strId);
    m_miValueCurrThreadId = miValueCurrThreadId;
    m_bHasCurrentThread = true;
  }

  return MIstatus::success;
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:68,代码来源:MICmdCmdThread.cpp

示例13: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command does work in this function.
//			The command is likely to communicate with the LLDB SBDebugger in here.
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdSupportInfoMiCmdQuery::Execute( void )
{
	CMICMDBASE_GETOPTION( pArgNamedCmdName, String, m_constStrArgCmdName );
	const CMIUtilString & rCmdToQuery( pArgNamedCmdName->GetValue() );
	const MIuint nLen = rCmdToQuery.length();
	const CMICmdFactory & rCmdFactory = CMICmdFactory::Instance();
	if( (nLen > 1) && (rCmdToQuery[ 0 ] == '-') )
		m_bCmdFound = rCmdFactory.CmdExist( rCmdToQuery.substr( 1, nLen - 1 ).c_str() );
	else
		m_bCmdFound = rCmdFactory.CmdExist( rCmdToQuery );
	
	return MIstatus::success;
}
开发者ID:Jean-Daniel,项目名称:lldb,代码行数:22,代码来源:MICmdCmdSupportInfo.cpp

示例14: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this function.
//          The command is likely to communicate with the LLDB SBDebugger in here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool
CMICmdCmdThreadInfo::Execute(void)
{
    CMICMDBASE_GETOPTION(pArgThreadId, Number, m_constStrArgNamedThreadId);
    MIuint nThreadId = 0;
    if (pArgThreadId->GetFound() && pArgThreadId->GetValid())
    {
        m_bSingleThread = true;
        nThreadId = static_cast<MIuint>(pArgThreadId->GetValue());
    }

    CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
    lldb::SBProcess sbProcess = rSessionInfo.GetProcess();
    lldb::SBThread thread = sbProcess.GetSelectedThread();

    if (m_bSingleThread)
    {
        thread = sbProcess.GetThreadByIndexID(nThreadId);
        m_bThreadInvalid = !thread.IsValid();
        if (m_bThreadInvalid)
            return MIstatus::success;

        CMICmnMIValueTuple miTuple;
        if (!rSessionInfo.MIResponseFormThreadInfo3(m_cmdData, thread, miTuple))
            return MIstatus::failure;

        m_miValueTupleThread = miTuple;

        return MIstatus::success;
    }

    // Multiple threads
    m_vecMIValueTuple.clear();
    const MIuint nThreads = sbProcess.GetNumThreads();
    for (MIuint i = 0; i < nThreads; i++)
    {
        lldb::SBThread thread = sbProcess.GetThreadAtIndex(i);
        if (thread.IsValid())
        {
            CMICmnMIValueTuple miTuple;
            if (!rSessionInfo.MIResponseFormThreadInfo3(m_cmdData, thread, miTuple))
                return MIstatus::failure;

            m_vecMIValueTuple.push_back(miTuple);
        }
    }

    return MIstatus::success;
}
开发者ID:johndpope,项目名称:lldb,代码行数:58,代码来源:MICmdCmdThread.cpp

示例15: CMICMDBASE_GETOPTION

//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command does work in this function.
//          The command is likely to communicate with the LLDB SBDebugger in here.
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool
CMICmdCmdGdbInfo::Execute(void)
{
    CMICMDBASE_GETOPTION(pArgPrint, String, m_constStrArgNamedPrint);
    const CMIUtilString &rPrintRequest(pArgPrint->GetValue());

    FnPrintPtr pPrintRequestFn = nullptr;
    if (!GetPrintFn(rPrintRequest, pPrintRequestFn))
    {
        m_strPrintFnName = rPrintRequest;
        m_bPrintFnRecognised = false;
        return MIstatus::success;
    }

    m_bPrintFnSuccessful = (this->*(pPrintRequestFn))();

    return MIstatus::success;
}
开发者ID:johndpope,项目名称:lldb,代码行数:27,代码来源:MICmdCmdGdbInfo.cpp


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