void CLuaRemoteDebug::ReceiveSetBreakpoints(CSerializationHelper &buffer) { m_breakPoints.clear(); int numBreakpoints; buffer.Read(numBreakpoints); for (int i=0; i<numBreakpoints; ++i) { const char* fileName; int line; fileName = buffer.ReadString(); buffer.Read(line); AddBreakPoint(fileName, line); } }
void InterpreterDisAsmFrame::DClick(wxListEvent& event) { long i = m_list->GetFirstSelected(); if (i < 0) return; const u32 start_pc = m_pc - m_item_count * 4; const u32 pc = start_pc + i * 4; //ConLog.Write("pc=0x%llx", pc); if (IsBreakPoint(pc)) { RemoveBreakPoint(pc); } else { AddBreakPoint(pc); } ShowAddr(start_pc); }
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; }