Beispiel #1
0
//++ ------------------------------------------------------------------------------------
// Details: The invoker requires this function. The command prepares a MI Record Result
//          for the work carried out in the Execute().
// Type:    Overridden.
// Args:    None.
// Return:  MIstatus::success - Functional succeeded.
//          MIstatus::failure - Functional failed.
// Throws:  None.
//--
bool
CMICmdCmdExecRun::Acknowledge()
{
    if (m_lldbResult.GetErrorSize() > 0)
    {
        const CMICmnMIValueConst miValueConst(m_lldbResult.GetError());
        const CMICmnMIValueResult miValueResult("message", miValueConst);
        const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Error, miValueResult);
        m_miResultRecord = miRecordResult;
    }
    else
    {
        const CMICmnMIResultRecord miRecordResult(m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Running);
        m_miResultRecord = miRecordResult;

        CMICmnLLDBDebugSessionInfo &rSessionInfo(CMICmnLLDBDebugSessionInfo::Instance());
        lldb::pid_t pid = rSessionInfo.GetProcess().GetProcessID();
        // Give the client '=thread-group-started,id="i1" pid="xyz"'
        m_bHasResultRecordExtra = true;
        const CMICmnMIValueConst miValueConst2("i1");
        const CMICmnMIValueResult miValueResult2("id", miValueConst2);
        const CMIUtilString strPid(CMIUtilString::Format("%lld", pid));
        const CMICmnMIValueConst miValueConst(strPid);
        const CMICmnMIValueResult miValueResult("pid", miValueConst);
        CMICmnMIOutOfBandRecord miOutOfBand(CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupStarted, miValueResult2);
        miOutOfBand.Add(miValueResult);
        m_miResultRecordExtra = miOutOfBand.GetString();
    }

    return MIstatus::success;
}
Beispiel #2
0
//++ ------------------------------------------------------------------------------------
// Details:	The invoker requires this function. The command prepares a MI Record Result
//			for the work carried out in the Execute().
// Type:	Overridden.
// Args:	None.
// Return:	MIstatus::success - Functional succeeded.
//			MIstatus::failure - Functional failed.
// Throws:	None.
//--
bool CMICmdCmdTargetSelect::Acknowledge( void )
{
	const CMICmnMIResultRecord miRecordResult( m_cmdData.strMiCmdToken, CMICmnMIResultRecord::eResultClass_Connected );
	m_miResultRecord = miRecordResult;
	
	CMICmnLLDBDebugSessionInfo & rSessionInfo( CMICmnLLDBDebugSessionInfo::Instance() );
	lldb::pid_t pid = rSessionInfo.m_lldbProcess.GetProcessID();
	// Prod the client i.e. Eclipse with out-of-band results to help it 'continue' because it is using LLDB debugger
	// Give the client '=thread-group-started,id="i1"'
	m_bHasResultRecordExtra = true;
	const CMICmnMIValueConst miValueConst2( "i1" );
	const CMICmnMIValueResult miValueResult2( "id", miValueConst2 );
	const CMIUtilString strPid( CMIUtilString::Format( "%lld", pid ) );
	const CMICmnMIValueConst miValueConst( strPid );
	const CMICmnMIValueResult miValueResult( "pid", miValueConst );
	CMICmnMIOutOfBandRecord miOutOfBand( CMICmnMIOutOfBandRecord::eOutOfBand_ThreadGroupStarted, miValueResult2 );
	miOutOfBand.Add( miValueResult );
	m_miResultRecordExtra = miOutOfBand.GetString();

	return MIstatus::success;
}