コード例 #1
0
void GenericOEPTraceHit()
{

    char* szInstructionType;
    typedef void(TITCALL * fEPCallBack)();
    fEPCallBack myEPCallBack = (fEPCallBack)glbEntryTracerData.EPCallBack;
    LPDEBUG_EVENT myDbgEvent = (LPDEBUG_EVENT)GetDebugData();

    glbEntryTracerData.MemoryAccessedFrom = (ULONG_PTR)GetContextData(UE_CIP);
    glbEntryTracerData.MemoryAccessed = myDbgEvent->u.Exception.ExceptionRecord.ExceptionInformation[1];
    glbEntryTracerData.AccessType = myDbgEvent->u.Exception.ExceptionRecord.ExceptionInformation[0];
    szInstructionType = (char*)DisassembleEx(dbgProcessInformation.hProcess, (void*)glbEntryTracerData.MemoryAccessedFrom, true);
    StepInto(&GenericOEPTraceHited);
}
コード例 #2
0
ファイル: LuaRemoteDebug.cpp プロジェクト: aronarts/FireNET
void CLuaRemoteDebug::OnNotificationNetworkReceive(const void *pBuffer, size_t length)
{
	if (!pBuffer || length == 0)
		return;
	CSerializationHelper bufferUtil((char*)pBuffer, length);
	char packetType;
	bufferUtil.Read(packetType);
	switch (packetType)
	{
	case ePT_Version:
		ReceiveVersion(bufferUtil);
		break;
	case ePT_Break:
		BreakOnNextLuaCall();
		break;
	case ePT_Continue:
		Continue();
		break;
	case ePT_StepOver:
		StepOver();
		break;
	case ePT_StepInto:
		StepInto();
		break;
	case ePT_StepOut:
		StepOut();
		break;
	case ePT_SetBreakpoints:
		ReceiveSetBreakpoints(bufferUtil);
		break;
	case ePT_FileMD5:
		ReceiveFileMD5Request(bufferUtil);
		break;
	case ePT_FileContents:
		ReceiveFileContentsRequest(bufferUtil);
		break;
	case ePT_EnableCppCallstack:
		ReceiveEnableCppCallstack(bufferUtil);
		break;
	case ePT_ModulesInformation:
		SendLoadedModulesInformation();
		break;
	default:
		CRY_ASSERT_MESSAGE(false, "Unrecognised packet type");
		break;
	}
}
コード例 #3
0
ファイル: VirtualMachine.cpp プロジェクト: jjuran/classix
	void ProgramControlHandle::StepOver()
	{
		auto threadMarker = vm.managers.ThreadManager().CreateExecutionMarker();
		
		Common::UInt32 word = *vm.allocator.ToPointer<Common::UInt32>(pc);
		PPCVM::Instruction inst = word.Get();
		if (inst.OPCD == 18 && inst.LK == 1)
		{
			uint32_t sp = vm.state.r1;
			uint32_t desiredPC = pc + 4;
			do
			{
				RunTo(desiredPC);
			} while (vm.state.r1 != sp);
		}
		else
			StepInto();
	}