From 09117e528661181e3640caada613277170a5edf9 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Thu, 19 Aug 2021 18:15:27 -0400 Subject: [PATCH] Added debugger step back button. Functionality still TODO. --- icons/StepBack.png | Bin 220 -> 17336 bytes resources.qrc | 1 + src/drivers/Qt/ConsoleDebugger.cpp | 32 +++++++++++++++++++++++++++++ src/drivers/Qt/ConsoleDebugger.h | 3 +++ src/drivers/Qt/TraceLogger.cpp | 7 ++++++- src/drivers/Qt/TraceLogger.h | 3 +++ 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/icons/StepBack.png b/icons/StepBack.png index 01a9b388076bc8ddee48fe1f0c67f8c314366758..264aaee844a1e15173d293bd6bf6b0e6f3ad4d1f 100644 GIT binary patch literal 17336 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 M>FVdQ&MBb@04f_!O8@`> diff --git a/resources.qrc b/resources.qrc index 29800e2e..e0ecde09 100644 --- a/resources.qrc +++ b/resources.qrc @@ -18,6 +18,7 @@ icons/debug-pause.png icons/StepInto.png icons/StepOver.png + icons/StepBack.png icons/StepOut.png icons/RunPpuFrame.png icons/RunPpuHalfFrame.png diff --git a/src/drivers/Qt/ConsoleDebugger.cpp b/src/drivers/Qt/ConsoleDebugger.cpp index 1f39d0ed..c2136cff 100644 --- a/src/drivers/Qt/ConsoleDebugger.cpp +++ b/src/drivers/Qt/ConsoleDebugger.cpp @@ -76,6 +76,7 @@ #include "Qt/HexEditor.h" #include "Qt/ConsoleDebugger.h" #include "Qt/ConsoleUtilities.h" +#include "Qt/TraceLogger.h" #include "Qt/ColorMenu.h" // Where are these defined? @@ -588,6 +589,16 @@ QMenuBar *ConsoleDebugger::buildMenuBar(void) debugMenu->addAction(act); + // Debug -> Step Back + stepBackMenuAct = act = new QAction(tr("Step &Back"), this); + act->setShortcut(QKeySequence( tr("F9") ) ); + act->setStatusTip(tr("Step Back")); + act->setIcon( QIcon(":icons/StepBack.png") ); + act->setEnabled(false); + connect( act, SIGNAL(triggered()), this, SLOT(debugStepBackCB(void)) ); + + debugMenu->addAction(act); + // Debug -> Run to Selected Line act = new QAction(tr("Run to S&elected Line"), this); act->setShortcut(QKeySequence( tr("F1") ) ); @@ -831,6 +842,16 @@ QToolBar *ConsoleDebugger::buildToolBar(void) toolBar->addAction(act); + // Debug -> Step Back + stepBackToolAct = act = new QAction(tr("Step &Back (F9)"), this); + //act->setShortcut(QKeySequence( tr("F9") ) ); + act->setStatusTip(tr("Step Back")); + act->setIcon( QIcon(":icons/StepBack.png") ); + act->setEnabled(false); + connect( act, SIGNAL(triggered()), this, SLOT(debugStepBackCB(void)) ); + + toolBar->addAction(act); + toolBar->addSeparator(); // Debug -> Run Line @@ -2725,6 +2746,14 @@ void ConsoleDebugger::debugStepOverCB(void) } } //---------------------------------------------------------------------------- +void ConsoleDebugger::debugStepBackCB(void) +{ + if (FCEUI_EmulationPaused()) + { + + } +} +//---------------------------------------------------------------------------- void ConsoleDebugger::debugRunToCursorCB(void) { asmView->setBreakpointAtSelectedLine(); @@ -4068,6 +4097,9 @@ void ConsoleDebugger::updatePeriodic(void) dbgPauseAct[1]->setEnabled(true); } + stepBackMenuAct->setEnabled( FCEUD_TraceLoggerRunning() ); + stepBackToolAct->setEnabled( FCEUD_TraceLoggerRunning() ); + if ( waitingAtBp && (lastBpIdx == BREAK_TYPE_CYCLES_EXCEED) ) { cpuCyclesLbl1->setStyleSheet("background-color: blue; color: white;"); diff --git a/src/drivers/Qt/ConsoleDebugger.h b/src/drivers/Qt/ConsoleDebugger.h index ab0c0eef..3dd3baf8 100644 --- a/src/drivers/Qt/ConsoleDebugger.h +++ b/src/drivers/Qt/ConsoleDebugger.h @@ -501,6 +501,8 @@ class ConsoleDebugger : public QDialog QAction *brkOnCycleExcAct; QAction *brkOnInstrExcAct; + QAction *stepBackMenuAct; + QAction *stepBackToolAct; DebuggerTabWidget *tabView[2][4]; QWidget *asmViewContainerWidget; @@ -561,6 +563,7 @@ class ConsoleDebugger : public QDialog void debugStepIntoCB(void); void debugStepOutCB(void); void debugStepOverCB(void); + void debugStepBackCB(void); void debugRunToCursorCB(void); void debugRunLineCB(void); void debugRunLine128CB(void); diff --git a/src/drivers/Qt/TraceLogger.cpp b/src/drivers/Qt/TraceLogger.cpp index 8491aaaf..4c4d1c1a 100644 --- a/src/drivers/Qt/TraceLogger.cpp +++ b/src/drivers/Qt/TraceLogger.cpp @@ -390,7 +390,7 @@ TraceLoggerDialog_t::~TraceLoggerDialog_t(void) { updateTimer->stop(); - logging = 0; + //logging = 0; msleep(1); diskThread->requestInterruption(); diskThread->quit(); @@ -1191,6 +1191,11 @@ static void pushMsgToLogBuffer(const char *msg) pushToLogBuffer(rec); } //---------------------------------------------------- +int FCEUD_TraceLoggerRunning(void) +{ + return logging; +} +//---------------------------------------------------- //todo: really speed this up void FCEUD_TraceInstruction(uint8 *opcode, int size) { diff --git a/src/drivers/Qt/TraceLogger.h b/src/drivers/Qt/TraceLogger.h index a3623732..ad1bfed4 100644 --- a/src/drivers/Qt/TraceLogger.h +++ b/src/drivers/Qt/TraceLogger.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -224,3 +225,5 @@ private slots: int initTraceLogBuffer(int maxRecs); void openTraceLoggerWindow(QWidget *parent); + +int FCEUD_TraceLoggerRunning(void);