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); }
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; } }
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(); }