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; } }
// The Play, Stop, Step, Skip, Go to PC and Show PC buttons go here void CCodeWindow::OnCodeStep(wxCommandEvent& event) { switch (event.GetId()) { case IDM_STEP: SingleStep(); break; case IDM_STEPOVER: StepOver(); break; case IDM_STEPOUT: StepOut(); break; case IDM_TOGGLE_BREAKPOINT: ToggleBreakpoint(); break; case IDM_SKIP: PC += 4; Update(); break; case IDM_SETPC: PC = codeview->GetSelection(); Update(); break; case IDM_GOTOPC: JumpToAddress(PC); break; } UpdateButtonStates(); // Update all toolbars in the aui manager Parent->UpdateGUI(); }
bool wxLuaDebugTarget::HandleDebuggerCmd(int debugCommand) { bool ret = false; switch ((int)debugCommand) { case wxLUASOCKET_DEBUGGER_CMD_NONE : { // This is an error, but maybe we can continue? ret = true; break; } case wxLUASOCKET_DEBUGGER_CMD_ADD_BREAKPOINT: { wxString fileName; wxInt32 lineNumber = 0; if (m_clientSocket.ReadString(fileName) && m_clientSocket.ReadInt32(lineNumber)) { ret = AddBreakPoint(fileName, lineNumber); } break; } case wxLUASOCKET_DEBUGGER_CMD_REMOVE_BREAKPOINT: { wxString fileName; wxInt32 lineNumber = 0; if (m_clientSocket.ReadString(fileName) && m_clientSocket.ReadInt32(lineNumber)) { ret = RemoveBreakPoint(fileName, lineNumber); } break; } case wxLUASOCKET_DEBUGGER_CMD_CLEAR_ALL_BREAKPOINTS: { ret = ClearAllBreakPoints(); break; } case wxLUASOCKET_DEBUGGER_CMD_RUN_BUFFER: { wxString fileName; wxString buffer; if (m_clientSocket.ReadString(fileName) && m_clientSocket.ReadString(buffer)) { ret = Run(fileName, buffer); } break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEP: { ret = Step(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOVER: { ret = StepOver(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOUT: { ret = StepOut(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_CONTINUE: { m_forceBreak = false; ret = Continue(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_BREAK: { ret = Break(); break; } case wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK: { ret = EnumerateStack(); break; } case wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK_ENTRY: { wxInt32 stackRef = 0; if (m_clientSocket.ReadInt32(stackRef)) ret = EnumerateStackEntry(stackRef); break; } case wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_TABLE_REF: { wxInt32 tableRef = 0; wxInt32 index = 0; long itemNode = 0; if (m_clientSocket.ReadInt32(tableRef) && m_clientSocket.ReadInt32(index) && m_clientSocket.ReadLong(itemNode)) { ret = EnumerateTable(tableRef, index, itemNode); } break; } case wxLUASOCKET_DEBUGGER_CMD_RESET: { ret = Reset(); break; } case wxLUASOCKET_DEBUGGER_CMD_EVALUATE_EXPR: { wxInt32 exprRef = 0; wxString buffer; if (m_clientSocket.ReadInt32(exprRef) && m_clientSocket.ReadString(buffer)) { ret = EvaluateExpr(exprRef, buffer); } break; } case wxLUASOCKET_DEBUGGER_CMD_CLEAR_DEBUG_REFERENCES: { size_t idx, idxMax = m_references.GetCount(); for (idx = 0; idx < idxMax; ++idx) { int iItem = m_references.Item(idx); m_wxlState.wxluaR_Unref(iItem, &wxlua_lreg_debug_refs_key); } m_references.Clear(); ret = true; break; } case wxLUASOCKET_DEBUGGER_CMD_DISABLE_BREAKPOINT: // FIXME do something here ret = true; break; case wxLUASOCKET_DEBUGGER_CMD_ENABLE_BREAKPOINT: // FIXME do something here ret = true; break; default : wxFAIL_MSG(wxT("Invalid wxLuaSocketDebuggerCommands_Type in wxLuaDebugTarget::ThreadFunction")); } return ret; }