Play-/Source/ui_qt/DebugSupport/QtDebugger.h

140 lines
3.9 KiB
C
Raw Normal View History

2019-08-31 12:33:24 -04:00
#pragma once
#include <QMainWindow>
2019-12-09 20:16:11 +00:00
#include "DebugView.h"
#include "CallStackWnd.h"
2019-12-10 12:31:00 +00:00
#include "FunctionsView.h"
2019-12-10 12:29:34 +00:00
#include "ThreadsViewWnd.h"
#include "AddressListViewWnd.h"
2019-08-31 12:33:24 -04:00
#include "PS2VM.h"
// Predeclares to avoid headers
class CDebugView;
2019-12-19 21:37:47 +00:00
namespace Ui
{
class QtDebugger;
}
class QtDebugger : public QMainWindow
2019-08-31 12:33:24 -04:00
{
Q_OBJECT
2019-08-31 12:33:24 -04:00
public:
explicit QtDebugger(CPS2VM&);
~QtDebugger();
2019-08-31 12:33:24 -04:00
static void InitializeConsole();
private slots:
void on_actionResume_triggered();
void on_actionStep_CPU_triggered();
void on_actionDump_INTC_Handlers_triggered();
void on_actionDump_DMAC_Handlers_triggered();
void on_actionAssemble_JAL_triggered();
void on_actionReanalyse_ee_triggered();
void on_actionFind_Functions_triggered();
void on_actionCascade_triggered();
void on_actionTile_triggered();
void on_actionLayout_1024x768_triggered();
void on_actionLayout_1280x1024_triggered();
void on_actionLayout_1600x1200_triggered();
2019-12-10 00:10:44 +00:00
void on_actionfind_word_value_triggered();
void on_actionFind_Word_Half_Value_triggered();
2019-12-10 00:44:54 +00:00
void on_actionCall_Stack_triggered();
void on_actionFunctions_triggered();
void on_actionThreads_triggered();
2019-12-12 01:44:55 +00:00
void on_actionView_Disassmebly_triggered();
2019-12-12 12:55:58 +00:00
void on_actionView_Registers_triggered();
2019-12-19 11:58:52 +00:00
void on_actionMemory_triggered();
2019-12-10 00:44:54 +00:00
2019-12-10 01:11:56 +00:00
void on_actionEmotionEngine_View_triggered();
void on_actionVector_Unit_0_triggered();
2019-12-19 21:36:33 +00:00
void on_actionVector_Unit_1_triggered();
2019-12-10 01:11:56 +00:00
void on_actionIOP_View_triggered();
2019-08-31 12:33:24 -04:00
private:
2019-12-19 21:37:47 +00:00
Ui::QtDebugger* ui;
2019-08-31 12:33:24 -04:00
enum DEBUGVIEW
{
DEBUGVIEW_EE = 0,
DEBUGVIEW_VU0,
DEBUGVIEW_VU1,
DEBUGVIEW_IOP,
DEBUGVIEW_MAX,
};
void RegisterPreferences();
void UpdateTitle();
void LoadSettings();
void SaveSettings();
2019-12-10 01:26:55 +00:00
void SerializeWindowGeometry(QMdiSubWindow*, const char*, const char*, const char*, const char*, const char*);
void UnserializeWindowGeometry(QMdiSubWindow*, const char*, const char*, const char*, const char*, const char*);
2019-08-31 12:33:24 -04:00
void Resume();
void StepCPU();
void FindWordValue(uint32);
void AssembleJAL();
void ReanalyzeEe();
void FindEeFunctions();
void Layout1024();
void Layout1280();
void Layout1600();
void LoadDebugTags();
void SaveDebugTags();
//View related functions
void ActivateView(unsigned int);
void LoadViewLayout();
void SaveViewLayout();
void LoadBytesPerLine();
void SaveBytesPerLine();
CDebugView* GetCurrentView();
CMIPS* GetContext();
2019-12-11 14:52:12 +00:00
CDisAsmWnd* GetDisassemblyWindow();
2019-12-19 11:58:52 +00:00
CMemoryViewMIPSWnd* GetMemoryViewWindow();
2019-12-09 20:16:11 +00:00
CRegViewWnd* GetRegisterViewWindow();
CCallStackWnd* GetCallStackWindow();
2019-08-31 12:33:24 -04:00
//Search functions
static std::vector<uint32> FindCallers(CMIPS*, uint32);
static std::vector<uint32> FindWordValueRefs(CMIPS*, uint32, uint32);
//Event handlers
void OnFunctionsViewFunctionDblClick(uint32);
void OnFunctionsViewFunctionsStateChange();
void OnThreadsViewAddressDblClick(uint32);
void OnExecutableChange();
void OnExecutableUnloading();
void OnMachineStateChange();
void OnRunningStateChange();
void OnFindCallersRequested(uint32);
void OnFindCallersAddressDblClick(uint32);
Framework::CSignal<void(uint32)>::Connection m_OnFunctionDblClickConnection;
Framework::CSignal<void()>::Connection m_OnFunctionsStateChangeConnection;
Framework::CSignal<void(uint32)>::Connection m_OnGotoAddressConnection;
2019-12-10 00:37:53 +00:00
CAddressListViewWnd::AddressSelectedEvent::Connection m_AddressSelectedConnection;
2019-08-31 12:33:24 -04:00
Framework::CSignal<void()>::Connection m_OnExecutableChangeConnection;
Framework::CSignal<void()>::Connection m_OnExecutableUnloadingConnection;
Framework::CSignal<void()>::Connection m_OnMachineStateChangeConnection;
Framework::CSignal<void()>::Connection m_OnRunningStateChangeConnection;
2019-12-19 22:20:32 +00:00
CDisAsmWnd::FindCallersRequestedEvent::Connection m_findCallersRequestConnection;
2019-08-31 12:33:24 -04:00
//CELFView* m_pELFView = nullptr;
2019-12-10 12:31:00 +00:00
CFunctionsView* m_pFunctionsView = nullptr;
2019-12-10 12:29:34 +00:00
CThreadsViewWnd* m_threadsView = nullptr;
2019-08-31 12:33:24 -04:00
CDebugView* m_pView[DEBUGVIEW_MAX];
CAddressListViewWnd* m_addressListView = nullptr;
2019-08-31 12:33:24 -04:00
unsigned int m_nCurrentView;
CPS2VM& m_virtualMachine;
};