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 "register_editor_dialog.h"
#include "instruction_editor_dialog.h"
#include "memory_viewer_panel.h"
#include "gui_settings.h"
#include "debugger_list.h"
#include "breakpoint_list.h"
@ -313,6 +314,28 @@ void debugger_frame::keyPressEvent(QKeyEvent* event)
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:
{
DoStep(true);

View File

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

View File

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