Link the memory viewer with the debugger

This commit is contained in:
Eladash 2020-12-17 00:11:45 +02:00 committed by Megamouse
parent ba03df8511
commit 2172974db9
3 changed files with 27 additions and 3 deletions

View file

@ -1,6 +1,7 @@
#include "debugger_frame.h" #include "debugger_frame.h"
#include "register_editor_dialog.h" #include "register_editor_dialog.h"
#include "instruction_editor_dialog.h" #include "instruction_editor_dialog.h"
#include "memory_viewer_panel.h"
#include "gui_settings.h" #include "gui_settings.h"
#include "debugger_list.h" #include "debugger_list.h"
#include "breakpoint_list.h" #include "breakpoint_list.h"
@ -313,6 +314,28 @@ void debugger_frame::keyPressEvent(QKeyEvent* event)
return; return;
} }
case Qt::Key_M:
{
// Memory viewer
u32 addr = pc;
if (auto spu = static_cast<const spu_thread*>(cpu->id_type() == 2 ? cpu.get() : nullptr))
{
if (spu->get_type() != spu_type::threaded)
{
addr += RAW_SPU_BASE_ADDR + RAW_SPU_OFFSET * spu->index;
}
else
{
addr += SPU_FAKE_BASE_ADDR + SPU_LS_SIZE * (spu->id & 0xffffff);
}
}
auto mvp = new memory_viewer_panel(this, addr);
mvp->show();
return;
}
case Qt::Key_F10: case Qt::Key_F10:
{ {
DoStep(true); DoStep(true);

View file

@ -15,14 +15,14 @@
constexpr auto qstr = QString::fromStdString; constexpr auto qstr = QString::fromStdString;
memory_viewer_panel::memory_viewer_panel(QWidget* parent) memory_viewer_panel::memory_viewer_panel(QWidget* parent, u32 addr)
: QDialog(parent) : QDialog(parent)
, m_addr(addr)
{ {
setWindowTitle(tr("Memory Viewer")); setWindowTitle(tr("Memory Viewer"));
setObjectName("memory_viewer"); setObjectName("memory_viewer");
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
exit = false; exit = false;
m_addr = 0;
m_colcount = 16; m_colcount = 16;
m_rowcount = 16; m_rowcount = 16;
int pSize = 10; int pSize = 10;
@ -47,6 +47,7 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent)
QHBoxLayout* hbox_tools_mem_addr = new QHBoxLayout(); QHBoxLayout* hbox_tools_mem_addr = new QHBoxLayout();
m_addr_line = new QLineEdit(this); m_addr_line = new QLineEdit(this);
m_addr_line->setPlaceholderText("00000000"); m_addr_line->setPlaceholderText("00000000");
m_addr_line->setText(qstr(fmt::format("%08x", m_addr)));
m_addr_line->setFont(mono); m_addr_line->setFont(mono);
m_addr_line->setMaxLength(8); m_addr_line->setMaxLength(8);
m_addr_line->setFixedWidth(75); m_addr_line->setFixedWidth(75);

View file

@ -28,7 +28,7 @@ private:
public: public:
bool exit; bool exit;
memory_viewer_panel(QWidget* parent); memory_viewer_panel(QWidget* parent, u32 addr = 0);
~memory_viewer_panel(); ~memory_viewer_panel();
void wheelEvent(QWheelEvent *event) override; void wheelEvent(QWheelEvent *event) override;