mirror of
https://github.com/libretro/pcsx2.git
synced 2024-11-23 17:29:46 +00:00
Debugger: Add "Go to address" for both disasm and memory view
This commit is contained in:
parent
1bb398c6c2
commit
cb56b3f76b
@ -62,6 +62,7 @@ enum DisassemblyMenuIdentifiers
|
|||||||
ID_DISASM_SETPCTOHERE,
|
ID_DISASM_SETPCTOHERE,
|
||||||
ID_DISASM_TOGGLEBREAKPOINT,
|
ID_DISASM_TOGGLEBREAKPOINT,
|
||||||
ID_DISASM_FOLLOWBRANCH,
|
ID_DISASM_FOLLOWBRANCH,
|
||||||
|
ID_DISASM_GOTOADDRESS,
|
||||||
ID_DISASM_GOTOINMEMORYVIEW,
|
ID_DISASM_GOTOINMEMORYVIEW,
|
||||||
ID_DISASM_KILLFUNCTION,
|
ID_DISASM_KILLFUNCTION,
|
||||||
ID_DISASM_RENAMEFUNCTION,
|
ID_DISASM_RENAMEFUNCTION,
|
||||||
@ -168,6 +169,7 @@ CtrlDisassemblyView::CtrlDisassemblyView(wxWindow* parent, DebugInterface* _cpu)
|
|||||||
menu.Append(ID_DISASM_TOGGLEBREAKPOINT, L"Toggle Breakpoint");
|
menu.Append(ID_DISASM_TOGGLEBREAKPOINT, L"Toggle Breakpoint");
|
||||||
menu.Append(ID_DISASM_FOLLOWBRANCH, L"Follow Branch");
|
menu.Append(ID_DISASM_FOLLOWBRANCH, L"Follow Branch");
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
|
menu.Append(ID_DISASM_GOTOADDRESS, L"Go to Address");
|
||||||
menu.Append(ID_DISASM_GOTOINMEMORYVIEW, L"Go to in Memory View");
|
menu.Append(ID_DISASM_GOTOINMEMORYVIEW, L"Go to in Memory View");
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
menu.Append(ID_DISASM_ADDFUNCTION, L"Add Function Here");
|
menu.Append(ID_DISASM_ADDFUNCTION, L"Add Function Here");
|
||||||
@ -669,6 +671,9 @@ void CtrlDisassemblyView::onPopupClick(wxCommandEvent& evt)
|
|||||||
wxTheClipboard->Close();
|
wxTheClipboard->Close();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ID_DISASM_GOTOADDRESS:
|
||||||
|
postEvent(debEVT_GOTOADDRESS, 0);
|
||||||
|
break;
|
||||||
case ID_DISASM_GOTOINMEMORYVIEW:
|
case ID_DISASM_GOTOINMEMORYVIEW:
|
||||||
postEvent(debEVT_GOTOINMEMORYVIEW,curAddress);
|
postEvent(debEVT_GOTOINMEMORYVIEW,curAddress);
|
||||||
break;
|
break;
|
||||||
@ -685,6 +690,9 @@ void CtrlDisassemblyView::onPopupClick(wxCommandEvent& evt)
|
|||||||
case ID_DISASM_RUNTOHERE:
|
case ID_DISASM_RUNTOHERE:
|
||||||
postEvent(debEVT_RUNTOPOS,curAddress);
|
postEvent(debEVT_RUNTOPOS,curAddress);
|
||||||
break;
|
break;
|
||||||
|
case ID_DISASM_TOGGLEBREAKPOINT:
|
||||||
|
toggleBreakpoint(false);
|
||||||
|
break;
|
||||||
case ID_DISASM_DISASSEMBLETOFILE:
|
case ID_DISASM_DISASSEMBLETOFILE:
|
||||||
disassembleToFile();
|
disassembleToFile();
|
||||||
break;
|
break;
|
||||||
|
@ -45,6 +45,7 @@ wxEND_EVENT_TABLE()
|
|||||||
enum MemoryViewMenuIdentifiers
|
enum MemoryViewMenuIdentifiers
|
||||||
{
|
{
|
||||||
ID_MEMVIEW_GOTOINDISASM = 1,
|
ID_MEMVIEW_GOTOINDISASM = 1,
|
||||||
|
ID_MEMVIEW_GOTOADDRESS,
|
||||||
ID_MEMVIEW_COPYADDRESS,
|
ID_MEMVIEW_COPYADDRESS,
|
||||||
ID_MEMVIEW_FOLLOWADDRESS,
|
ID_MEMVIEW_FOLLOWADDRESS,
|
||||||
ID_MEMVIEW_DISPLAYVALUE_8,
|
ID_MEMVIEW_DISPLAYVALUE_8,
|
||||||
@ -82,6 +83,7 @@ CtrlMemView::CtrlMemView(wxWindow* parent, DebugInterface* _cpu)
|
|||||||
underlineFont.SetPixelSize(wxSize(charWidth,rowHeight));
|
underlineFont.SetPixelSize(wxSize(charWidth,rowHeight));
|
||||||
|
|
||||||
menu.Append(ID_MEMVIEW_GOTOINDISASM, L"Go to in Disasm");
|
menu.Append(ID_MEMVIEW_GOTOINDISASM, L"Go to in Disasm");
|
||||||
|
menu.Append(ID_MEMVIEW_GOTOADDRESS, L"Go to address");
|
||||||
menu.Append(ID_MEMVIEW_COPYADDRESS, L"Copy address");
|
menu.Append(ID_MEMVIEW_COPYADDRESS, L"Copy address");
|
||||||
menu.Append(ID_MEMVIEW_FOLLOWADDRESS, L"Follow address");
|
menu.Append(ID_MEMVIEW_FOLLOWADDRESS, L"Follow address");
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
@ -326,7 +328,10 @@ void CtrlMemView::onPopupClick(wxCommandEvent& evt)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ID_MEMVIEW_GOTOINDISASM:
|
case ID_MEMVIEW_GOTOINDISASM:
|
||||||
postEvent(debEVT_GOTOINDISASM,curAddress);
|
postEvent(debEVT_GOTOINDISASM,1);
|
||||||
|
break;
|
||||||
|
case ID_MEMVIEW_GOTOADDRESS:
|
||||||
|
postEvent(debEVT_GOTOADDRESS, curAddress);
|
||||||
break;
|
break;
|
||||||
case ID_MEMVIEW_FOLLOWADDRESS:
|
case ID_MEMVIEW_FOLLOWADDRESS:
|
||||||
gotoAddress(cpu->read32(curAddress), true);
|
gotoAddress(cpu->read32(curAddress), true);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
wxDEFINE_EVENT(debEVT_SETSTATUSBARTEXT, wxCommandEvent);
|
wxDEFINE_EVENT(debEVT_SETSTATUSBARTEXT, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(debEVT_UPDATELAYOUT, wxCommandEvent);
|
wxDEFINE_EVENT(debEVT_UPDATELAYOUT, wxCommandEvent);
|
||||||
|
wxDEFINE_EVENT(debEVT_GOTOADDRESS, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(debEVT_GOTOINMEMORYVIEW, wxCommandEvent);
|
wxDEFINE_EVENT(debEVT_GOTOINMEMORYVIEW, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(debEVT_REFERENCEMEMORYVIEW, wxCommandEvent);
|
wxDEFINE_EVENT(debEVT_REFERENCEMEMORYVIEW, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(debEVT_GOTOINDISASM, wxCommandEvent);
|
wxDEFINE_EVENT(debEVT_GOTOINDISASM, wxCommandEvent);
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
wxDECLARE_EVENT(debEVT_SETSTATUSBARTEXT, wxCommandEvent);
|
wxDECLARE_EVENT(debEVT_SETSTATUSBARTEXT, wxCommandEvent);
|
||||||
wxDECLARE_EVENT(debEVT_UPDATELAYOUT, wxCommandEvent);
|
wxDECLARE_EVENT(debEVT_UPDATELAYOUT, wxCommandEvent);
|
||||||
|
wxDECLARE_EVENT(debEVT_GOTOADDRESS, wxCommandEvent);
|
||||||
wxDECLARE_EVENT(debEVT_GOTOINMEMORYVIEW, wxCommandEvent);
|
wxDECLARE_EVENT(debEVT_GOTOINMEMORYVIEW, wxCommandEvent);
|
||||||
wxDECLARE_EVENT(debEVT_REFERENCEMEMORYVIEW, wxCommandEvent);
|
wxDECLARE_EVENT(debEVT_REFERENCEMEMORYVIEW, wxCommandEvent);
|
||||||
wxDECLARE_EVENT(debEVT_GOTOINDISASM, wxCommandEvent);
|
wxDECLARE_EVENT(debEVT_GOTOINDISASM, wxCommandEvent);
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
wxBEGIN_EVENT_TABLE(DisassemblyDialog, wxFrame)
|
wxBEGIN_EVENT_TABLE(DisassemblyDialog, wxFrame)
|
||||||
EVT_COMMAND( wxID_ANY, debEVT_SETSTATUSBARTEXT, DisassemblyDialog::onDebuggerEvent )
|
EVT_COMMAND( wxID_ANY, debEVT_SETSTATUSBARTEXT, DisassemblyDialog::onDebuggerEvent )
|
||||||
EVT_COMMAND( wxID_ANY, debEVT_UPDATELAYOUT, DisassemblyDialog::onDebuggerEvent )
|
EVT_COMMAND( wxID_ANY, debEVT_UPDATELAYOUT, DisassemblyDialog::onDebuggerEvent )
|
||||||
|
EVT_COMMAND( wxID_ANY, debEVT_GOTOADDRESS, DisassemblyDialog::onDebuggerEvent )
|
||||||
EVT_COMMAND( wxID_ANY, debEVT_GOTOINMEMORYVIEW, DisassemblyDialog::onDebuggerEvent )
|
EVT_COMMAND( wxID_ANY, debEVT_GOTOINMEMORYVIEW, DisassemblyDialog::onDebuggerEvent )
|
||||||
EVT_COMMAND( wxID_ANY, debEVT_REFERENCEMEMORYVIEW, DisassemblyDialog::onDebuggerEvent )
|
EVT_COMMAND( wxID_ANY, debEVT_REFERENCEMEMORYVIEW, DisassemblyDialog::onDebuggerEvent )
|
||||||
EVT_COMMAND( wxID_ANY, debEVT_RUNTOPOS, DisassemblyDialog::onDebuggerEvent )
|
EVT_COMMAND( wxID_ANY, debEVT_RUNTOPOS, DisassemblyDialog::onDebuggerEvent )
|
||||||
@ -483,6 +484,21 @@ void DisassemblyDialog::onDebuggerEvent(wxCommandEvent& evt)
|
|||||||
currentCpu->GetSizer()->Layout();
|
currentCpu->GetSizer()->Layout();
|
||||||
topSizer->Layout();
|
topSizer->Layout();
|
||||||
update();
|
update();
|
||||||
|
} else if (type == debEVT_GOTOADDRESS)
|
||||||
|
{
|
||||||
|
DebugInterface* cpu = reinterpret_cast<DebugInterface*>(evt.GetClientData());
|
||||||
|
u64 addr;
|
||||||
|
if (!executeExpressionWindow(this, cpu, addr))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (currentCpu != NULL) {
|
||||||
|
// GetInt() is 0 when called by the disassembly view, 1 when called by the memory view
|
||||||
|
if (!evt.GetInt())
|
||||||
|
currentCpu->getDisassembly()->gotoAddress(addr);
|
||||||
|
else
|
||||||
|
currentCpu->getMemoryView()->gotoAddress(addr);
|
||||||
|
}
|
||||||
|
update();
|
||||||
} else if (type == debEVT_GOTOINMEMORYVIEW)
|
} else if (type == debEVT_GOTOINMEMORYVIEW)
|
||||||
{
|
{
|
||||||
if (currentCpu != NULL)
|
if (currentCpu != NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user