Merge pull request #1561 from shygoo2/exc-bp-window
[Debugger] Add CPU exception breakpoint window
This commit is contained in:
commit
cb65e9605e
|
@ -21,6 +21,7 @@ __interface CDebugger
|
|||
virtual void OpenSymbolsWindow(void) = 0;
|
||||
virtual void OpenDMALogWindow(void) = 0;
|
||||
virtual void OpenCPULogWindow(void) = 0;
|
||||
virtual void OpenExcBreakpointsWindow(void) = 0;
|
||||
virtual void OpenStackTraceWindow(void) = 0;
|
||||
virtual void OpenStackViewWindow(void) = 0;
|
||||
virtual void TLBChanged(void) = 0;
|
||||
|
@ -38,4 +39,5 @@ __interface CDebugger
|
|||
|
||||
virtual void CPUStepStarted(void) = 0;
|
||||
virtual void CPUStep(void) = 0;
|
||||
virtual void CPUStepEnded(void) = 0;
|
||||
};
|
||||
|
|
|
@ -305,26 +305,22 @@ void CInterpreterCPU::ExecuteCPU()
|
|||
g_Settings->SaveBool(Debugger_SteppingOps, true);
|
||||
}
|
||||
|
||||
g_Debugger->CPUStepStarted(); // may set stepping ops/skip op
|
||||
|
||||
if (isStepping())
|
||||
{
|
||||
g_Debugger->WaitForStep();
|
||||
}
|
||||
|
||||
bool bSkip = SkipOp();
|
||||
|
||||
if (!bSkip)
|
||||
{
|
||||
g_Debugger->CPUStepStarted();
|
||||
bSkip = SkipOp();
|
||||
}
|
||||
|
||||
if (bSkip)
|
||||
if (SkipOp())
|
||||
{
|
||||
// Skip command if instructed by the debugger
|
||||
g_Settings->SaveBool(Debugger_SkipOp, false);
|
||||
PROGRAM_COUNTER += 4;
|
||||
continue;
|
||||
}
|
||||
|
||||
g_Debugger->CPUStep();
|
||||
}
|
||||
|
||||
/* if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER < 0x80380000)
|
||||
|
@ -338,7 +334,7 @@ void CInterpreterCPU::ExecuteCPU()
|
|||
_GPR[0].DW = 0; /* MIPS $zero hard-wired to 0 */
|
||||
NextTimer -= CountPerOp;
|
||||
|
||||
if (CDebugSettings::HaveDebugger()) { g_Debugger->CPUStep(); }
|
||||
if (CDebugSettings::HaveDebugger()) { g_Debugger->CPUStepEnded(); }
|
||||
|
||||
PROGRAM_COUNTER += 4;
|
||||
switch (R4300iOp::m_NextInstruction)
|
||||
|
|
|
@ -341,6 +341,7 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
|
|||
AddHandler(Debugger_AutoRefreshMemoryView, new CSettingTypeApplication("Debugger", "Auto Refresh Memory View", true));
|
||||
AddHandler(Debugger_CPULoggingEnabled, new CSettingTypeApplication("Debugger", "Enable CPU Logging", false));
|
||||
AddHandler(Debugger_CPULogBufferSize, new CSettingTypeApplication("Debugger", "CPU Log Buffer Size", (uint32_t)1024));
|
||||
AddHandler(Debugger_ExceptionBreakpoints, new CSettingTypeApplication("Debugger", "Exception Breakpoints", (uint32_t)0));
|
||||
AddHandler(Debugger_DebugLanguage, new CSettingTypeApplication("Debugger", "Debug Language", false));
|
||||
AddHandler(Debugger_ShowDivByZero, new CSettingTypeApplication("Debugger", "Show Div by zero", false));
|
||||
AddHandler(Debugger_AppLogFlush, new CSettingTypeApplication("Logging", "Log Auto Flush", (uint32_t)false));
|
||||
|
|
|
@ -29,6 +29,7 @@ bool CDebugSettings::m_HaveWriteBP = false;
|
|||
bool CDebugSettings::m_HaveReadBP = false;
|
||||
bool CDebugSettings::m_bShowPifRamErrors = false;
|
||||
bool CDebugSettings::m_bCPULoggingEnabled = false;
|
||||
uint32_t CDebugSettings::m_ExceptionBreakpoints = 0;
|
||||
|
||||
CDebugSettings::CDebugSettings()
|
||||
{
|
||||
|
@ -49,6 +50,7 @@ CDebugSettings::CDebugSettings()
|
|||
g_Settings->RegisterChangeCB(Debugger_WaitingForStep, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_ShowPifErrors, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_CPULoggingEnabled, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->RegisterChangeCB(Debugger_ExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
|
||||
RefreshSettings();
|
||||
}
|
||||
|
@ -71,6 +73,7 @@ CDebugSettings::~CDebugSettings()
|
|||
g_Settings->UnregisterChangeCB(Debugger_WaitingForStep, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_ShowPifErrors, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_CPULoggingEnabled, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
g_Settings->UnregisterChangeCB(Debugger_ExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,6 +92,7 @@ void CDebugSettings::RefreshSettings()
|
|||
m_HaveReadBP = m_HaveDebugger && g_Settings->LoadBool(Debugger_ReadBPExists);
|
||||
m_bShowPifRamErrors = m_HaveDebugger && g_Settings->LoadBool(Debugger_ShowPifErrors);
|
||||
m_bCPULoggingEnabled = m_HaveDebugger && g_Settings->LoadBool(Debugger_CPULoggingEnabled);
|
||||
m_ExceptionBreakpoints = m_HaveDebugger ? g_Settings->LoadDword(Debugger_ExceptionBreakpoints) : 0;
|
||||
|
||||
m_Debugging = m_HaveDebugger && (m_HaveExecutionBP || m_WaitingForStep || m_HaveWriteBP || m_HaveReadBP);
|
||||
}
|
|
@ -32,6 +32,7 @@ public:
|
|||
static inline bool HaveReadBP(void) { return m_HaveReadBP; }
|
||||
static inline bool bShowPifRamErrors(void) { return m_bShowPifRamErrors; }
|
||||
static inline bool bCPULoggingEnabled(void) { return m_bCPULoggingEnabled; }
|
||||
static inline uint32_t ExceptionBreakpoints(void) { return m_ExceptionBreakpoints; }
|
||||
|
||||
private:
|
||||
static void StaticRefreshSettings(CDebugSettings * _this)
|
||||
|
@ -55,6 +56,7 @@ private:
|
|||
static bool m_HaveReadBP;
|
||||
static bool m_bShowPifRamErrors;
|
||||
static bool m_bCPULoggingEnabled;
|
||||
static uint32_t m_ExceptionBreakpoints;
|
||||
|
||||
static int32_t m_RefCount;
|
||||
static bool m_Registered;
|
||||
|
|
|
@ -255,6 +255,7 @@ enum SettingID
|
|||
Debugger_AutoRefreshMemoryView,
|
||||
Debugger_CPULoggingEnabled,
|
||||
Debugger_CPULogBufferSize,
|
||||
Debugger_ExceptionBreakpoints,
|
||||
|
||||
//Trace
|
||||
Debugger_TraceMD5,
|
||||
|
|
|
@ -88,6 +88,7 @@
|
|||
<ClCompile Include="UserInterface\Debugger\Debugger-AddSymbol.cpp" />
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-Commands.cpp" />
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-DMALogView.cpp" />
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-ExceptionBreakpoints.cpp" />
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-MemoryDump.cpp" />
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-MemorySearch.cpp" />
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-RegisterTabs.cpp" />
|
||||
|
@ -151,6 +152,7 @@
|
|||
<ClInclude Include="UserInterface\Debugger\Debugger-AddSymbol.h" />
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-Commands.h" />
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-DMALogView.h" />
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-ExceptionBreakpoints.h" />
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-MemoryDump.h" />
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-MemorySearch.h" />
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-RegisterTabs.h" />
|
||||
|
|
|
@ -228,6 +228,9 @@
|
|||
<ClCompile Include="UserInterface\Debugger\Debugger-CPULogView.cpp">
|
||||
<Filter>Source Files\User Interface Source\Debugger Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="UserInterface\Debugger\Debugger-ExceptionBreakpoints.cpp">
|
||||
<Filter>Source Files\User Interface Source\Debugger Source</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="UserInterface\resource.h">
|
||||
|
@ -437,6 +440,9 @@
|
|||
<ClInclude Include="UserInterface\Debugger\Debugger-CPULogView.h">
|
||||
<Filter>Header Files\User Interface Headers\Debugger Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="UserInterface\Debugger\Debugger-ExceptionBreakpoints.h">
|
||||
<Filter>Header Files\User Interface Headers\Debugger Headers</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\divider.cur">
|
||||
|
|
|
@ -77,6 +77,7 @@ void RegisterUISettings (void)
|
|||
g_Settings->AddHandler((SettingID)(FirstUISettings + DebuggerUI_StackTracePos), new CSettingTypeApplication("Debugger UI", "Stack Trace Pos", Default_None));
|
||||
g_Settings->AddHandler((SettingID)(FirstUISettings + DebuggerUI_SymbolsPos), new CSettingTypeApplication("Debugger UI", "Symbols Pos", Default_None));
|
||||
g_Settings->AddHandler((SettingID)(FirstUISettings + DebuggerUI_TLBPos), new CSettingTypeApplication("Debugger UI", "TLB Pos", Default_None));
|
||||
g_Settings->AddHandler((SettingID)(FirstUISettings + DebuggerUI_ExceptionBPPos), new CSettingTypeApplication("Debugger UI", "Exception BP Pos", Default_None));
|
||||
}
|
||||
|
||||
void UISettingsSaveBool(UISettingID Type, bool Value)
|
||||
|
|
|
@ -74,6 +74,7 @@ enum UISettingID
|
|||
DebuggerUI_StackTracePos,
|
||||
DebuggerUI_SymbolsPos,
|
||||
DebuggerUI_TLBPos,
|
||||
DebuggerUI_ExceptionBPPos
|
||||
};
|
||||
|
||||
void RegisterUISettings (void);
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
#include "stdafx.h"
|
||||
#include "DebuggerUI.h"
|
||||
|
||||
CDebugExcBreakpoints::ExcCheckboxMeta CDebugExcBreakpoints::ExcCheckboxMap[] = {
|
||||
{ IDC_CHK_INT, 0 },
|
||||
{ IDC_CHK_MOD, 1 },
|
||||
{ IDC_CHK_RMISS, 2 },
|
||||
{ IDC_CHK_WMISS, 3 },
|
||||
{ IDC_CHK_RADE, 4 },
|
||||
{ IDC_CHK_WADE, 5 },
|
||||
{ IDC_CHK_IBE, 6 },
|
||||
{ IDC_CHK_DBE, 7 },
|
||||
{ IDC_CHK_SYSCALL, 8 },
|
||||
{ IDC_CHK_BREAK, 9 },
|
||||
{ IDC_CHK_II, 10 },
|
||||
{ IDC_CHK_CPU, 11 },
|
||||
{ IDC_CHK_OV, 12 },
|
||||
{ IDC_CHK_TRAP, 13 },
|
||||
{ IDC_CHK_VCEI, 14 },
|
||||
{ IDC_CHK_FPE, 15 },
|
||||
{ IDC_CHK_WATCH, 23 },
|
||||
{ IDC_CHK_VCED, 31 },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
CDebugExcBreakpoints::CDebugExcBreakpoints(CDebuggerUI* debugger) :
|
||||
CDebugDialog<CDebugExcBreakpoints>(debugger)
|
||||
{
|
||||
}
|
||||
|
||||
CDebugExcBreakpoints::~CDebugExcBreakpoints()
|
||||
{
|
||||
}
|
||||
|
||||
LRESULT CDebugExcBreakpoints::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
|
||||
{
|
||||
DlgSavePos_Init(DebuggerUI_ExceptionBPPos);
|
||||
|
||||
uint32_t excBreakpoints = g_Settings->LoadDword(Debugger_ExceptionBreakpoints);
|
||||
|
||||
for (int i = 0; ExcCheckboxMap[i].ctrlId != 0; i++)
|
||||
{
|
||||
uint32_t excBit = (1 << ExcCheckboxMap[i].exc);
|
||||
|
||||
if (excBreakpoints & excBit)
|
||||
{
|
||||
SendDlgItemMessage(ExcCheckboxMap[i].ctrlId, BM_SETCHECK, BST_CHECKED, 0);
|
||||
}
|
||||
}
|
||||
|
||||
LoadWindowPos();
|
||||
WindowCreated();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LRESULT CDebugExcBreakpoints::OnDestroy(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
LRESULT CDebugExcBreakpoints::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND, BOOL& /*bHandled*/)
|
||||
{
|
||||
switch (wID)
|
||||
{
|
||||
case IDOK:
|
||||
case IDCANCEL:
|
||||
EndDialog(0);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (int i = 0; ExcCheckboxMap[i].ctrlId != 0; i++)
|
||||
{
|
||||
if (ExcCheckboxMap[i].ctrlId == wID)
|
||||
{
|
||||
uint32_t excBit = (1 << ExcCheckboxMap[i].exc);
|
||||
bool bChecked = (SendMessage(GetDlgItem(wID), BM_GETSTATE, 0, 0) & BST_CHECKED) != 0;
|
||||
uint32_t excBreakpoints = g_Settings->LoadDword(Debugger_ExceptionBreakpoints);
|
||||
|
||||
if (bChecked)
|
||||
{
|
||||
excBreakpoints |= excBit;
|
||||
}
|
||||
else
|
||||
{
|
||||
excBreakpoints &= ~excBit;
|
||||
}
|
||||
|
||||
g_Settings->SaveDword(Debugger_ExceptionBreakpoints, excBreakpoints);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CDebugExcBreakpoints::OnExitSizeMove(void)
|
||||
{
|
||||
SaveWindowPos();
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdafx.h>
|
||||
#include "DebuggerUI.h"
|
||||
|
||||
|
||||
class CDebugExcBreakpoints :
|
||||
public CDebugDialog<CDebugExcBreakpoints>
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
WORD ctrlId;
|
||||
int exc;
|
||||
} ExcCheckboxMeta;
|
||||
|
||||
public:
|
||||
enum { IDD = IDD_Debugger_ExceptionBP };
|
||||
|
||||
CDebugExcBreakpoints(CDebuggerUI * debugger);
|
||||
virtual ~CDebugExcBreakpoints(void);
|
||||
|
||||
private:
|
||||
static ExcCheckboxMeta ExcCheckboxMap[];
|
||||
|
||||
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
|
||||
LRESULT OnClicked(WORD wNotifyCode, WORD wID, HWND /*hWndCtl*/, BOOL& bHandled);
|
||||
|
||||
void OnExitSizeMove(void);
|
||||
LRESULT OnDestroy(void);
|
||||
|
||||
BEGIN_MSG_MAP_EX(CDebugExcBreakpoints)
|
||||
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
|
||||
COMMAND_CODE_HANDLER(BN_CLICKED, OnClicked)
|
||||
MSG_WM_EXITSIZEMOVE(OnExitSizeMove)
|
||||
MSG_WM_DESTROY(OnDestroy)
|
||||
END_MSG_MAP()
|
||||
};
|
|
@ -33,6 +33,7 @@ CDebuggerUI::CDebuggerUI() :
|
|||
m_StackView(NULL),
|
||||
m_DMALogView(NULL),
|
||||
m_CPULogView(NULL),
|
||||
m_ExcBreakpoints(NULL),
|
||||
m_DMALog(NULL),
|
||||
m_CPULog(NULL),
|
||||
m_StepEvent(false)
|
||||
|
@ -65,6 +66,7 @@ CDebuggerUI::~CDebuggerUI(void)
|
|||
delete m_StackTrace;
|
||||
delete m_DMALogView;
|
||||
delete m_CPULogView;
|
||||
delete m_ExcBreakpoints;
|
||||
delete m_DMALog;
|
||||
delete m_CPULog;
|
||||
|
||||
|
@ -179,6 +181,12 @@ void CDebuggerUI::Debug_Reset(void)
|
|||
delete m_StackView;
|
||||
m_StackView = NULL;
|
||||
}
|
||||
if (m_ExcBreakpoints)
|
||||
{
|
||||
m_ExcBreakpoints->HideWindow();
|
||||
delete m_ExcBreakpoints;
|
||||
m_ExcBreakpoints = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void CDebuggerUI::OpenMemoryDump()
|
||||
|
@ -344,6 +352,15 @@ void CDebuggerUI::OpenCPULogWindow(void)
|
|||
m_CPULogView->ShowWindow();
|
||||
}
|
||||
|
||||
void CDebuggerUI::OpenExcBreakpointsWindow(void)
|
||||
{
|
||||
if (m_ExcBreakpoints == NULL)
|
||||
{
|
||||
m_ExcBreakpoints = new CDebugExcBreakpoints(this);
|
||||
}
|
||||
m_ExcBreakpoints->ShowWindow();
|
||||
}
|
||||
|
||||
void CDebuggerUI::OpenStackTraceWindow(void)
|
||||
{
|
||||
if (m_StackTrace == NULL)
|
||||
|
@ -604,14 +621,13 @@ void CDebuggerUI::TLBChanged()
|
|||
Debug_RefreshTLBWindow();
|
||||
}
|
||||
|
||||
// Exception handling - break on exception vector and show cpu log on certain errors
|
||||
|
||||
// Exception handling - break on exception vector if exception bp is set
|
||||
void CDebuggerUI::HandleCPUException(void)
|
||||
{
|
||||
uint32_t pc = g_Reg->m_PROGRAM_COUNTER;
|
||||
int exc = g_Reg->CAUSE_REGISTER & 0x7C;
|
||||
int exc = (g_Reg->CAUSE_REGISTER >> 2) & 0x1F;
|
||||
|
||||
// ignore interrupt, syscall, coprocessor unusable, watch
|
||||
if (exc != EXC_INT && exc != EXC_SYSCALL && exc != EXC_CPU && exc != EXC_WATCH)
|
||||
if ((CDebugSettings::ExceptionBreakpoints() & (1 << exc)))
|
||||
{
|
||||
if (CDebugSettings::bCPULoggingEnabled())
|
||||
{
|
||||
|
@ -688,12 +704,19 @@ void CDebuggerUI::CPUStepStarted()
|
|||
}
|
||||
}
|
||||
|
||||
if (pc == 0x80000000 || pc == 0x80000080 ||
|
||||
pc == 0xA0000100 || pc == 0x80000180)
|
||||
if (CDebugSettings::ExceptionBreakpoints() != 0)
|
||||
{
|
||||
HandleCPUException();
|
||||
if (pc == 0x80000000 || pc == 0x80000080 ||
|
||||
pc == 0xA0000100 || pc == 0x80000180)
|
||||
{
|
||||
HandleCPUException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Called before opcode is executed (not called if SkipOp is set)
|
||||
void CDebuggerUI::CPUStep()
|
||||
{
|
||||
if (bCPULoggingEnabled())
|
||||
{
|
||||
m_CPULog->PushState();
|
||||
|
@ -705,7 +728,8 @@ void CDebuggerUI::CPUStepStarted()
|
|||
}
|
||||
}
|
||||
|
||||
void CDebuggerUI::CPUStep()
|
||||
// Called after opcode has been executed
|
||||
void CDebuggerUI::CPUStepEnded()
|
||||
{
|
||||
OPCODE Opcode = R4300iOp::m_Opcode;
|
||||
uint32_t op = Opcode.op;
|
||||
|
|
|
@ -15,4 +15,5 @@
|
|||
#include "Debugger-DMALogView.h"
|
||||
#include "Debugger-CPULogView.h"
|
||||
#include "Debugger-StackView.h"
|
||||
#include "Debugger-StackTrace.h"
|
||||
#include "Debugger-StackTrace.h"
|
||||
#include "Debugger-ExceptionBreakpoints.h"
|
|
@ -24,6 +24,7 @@ class CDebugDMALogView;
|
|||
class CDebugCPULogView;
|
||||
class CDebugStackView;
|
||||
class CDebugStackTrace;
|
||||
class CDebugExcBreakpoints;
|
||||
|
||||
class CCPULog;
|
||||
class CDMALog;
|
||||
|
@ -61,6 +62,7 @@ public:
|
|||
void OpenDMALogWindow(void);
|
||||
void OpenCPULogWindow(void);
|
||||
void Debug_RefreshCPULogWindow(void);
|
||||
void OpenExcBreakpointsWindow(void);
|
||||
|
||||
bool ExecutionBP(uint32_t address);
|
||||
bool ReadBP8(uint32_t address);
|
||||
|
@ -90,23 +92,25 @@ protected:
|
|||
void TLBChanged(void);
|
||||
void CPUStepStarted(void);
|
||||
void CPUStep(void);
|
||||
void CPUStepEnded(void);
|
||||
void FrameDrawn(void);
|
||||
|
||||
private:
|
||||
CDebuggerUI(const CDebuggerUI&); // Disable copy constructor
|
||||
CDebuggerUI& operator=(const CDebuggerUI&); // Disable assignment
|
||||
|
||||
CDumpMemory * m_MemoryDump;
|
||||
CDebugMemoryView * m_MemoryView;
|
||||
CDebugMemorySearch * m_MemorySearch;
|
||||
CDebugTlb * m_DebugTLB;
|
||||
CDebugCommandsView * m_CommandsView;
|
||||
CDebugScripts * m_Scripts;
|
||||
CDebugSymbols * m_Symbols;
|
||||
CDebugDMALogView * m_DMALogView;
|
||||
CDebugCPULogView * m_CPULogView;
|
||||
CDebugStackTrace * m_StackTrace;
|
||||
CDebugStackView * m_StackView;
|
||||
CDumpMemory * m_MemoryDump;
|
||||
CDebugMemoryView * m_MemoryView;
|
||||
CDebugMemorySearch * m_MemorySearch;
|
||||
CDebugTlb * m_DebugTLB;
|
||||
CDebugCommandsView * m_CommandsView;
|
||||
CDebugScripts * m_Scripts;
|
||||
CDebugSymbols * m_Symbols;
|
||||
CDebugDMALogView * m_DMALogView;
|
||||
CDebugCPULogView * m_CPULogView;
|
||||
CDebugStackTrace * m_StackTrace;
|
||||
CDebugStackView * m_StackView;
|
||||
CDebugExcBreakpoints * m_ExcBreakpoints;
|
||||
|
||||
CBreakpoints * m_Breakpoints;
|
||||
CScriptSystem * m_ScriptSystem;
|
||||
|
|
|
@ -514,6 +514,7 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
|
|||
case ID_DEBUGGER_SYMBOLS: g_Debugger->OpenSymbolsWindow(); break;
|
||||
case ID_DEBUGGER_DMALOG: g_Debugger->OpenDMALogWindow(); break;
|
||||
case ID_DEBUGGER_CPULOG: g_Debugger->OpenCPULogWindow(); break;
|
||||
case ID_DEBUGGER_EXCBREAKPOINTS: g_Debugger->OpenExcBreakpointsWindow(); break;
|
||||
case ID_DEBUGGER_STACKTRACE: g_Debugger->OpenStackTraceWindow(); break;
|
||||
case ID_DEBUGGER_STACKVIEW: g_Debugger->OpenStackViewWindow(); break;
|
||||
case ID_CURRENT_SAVE_DEFAULT:
|
||||
|
@ -1132,6 +1133,12 @@ void CMainMenu::FillOutMenu(HMENU hMenu)
|
|||
//Item.SetItemEnabled(CPURunning);
|
||||
DebugMenu.push_back(Item);
|
||||
|
||||
/* Debug - Exception breakpoints
|
||||
*******************/
|
||||
Item.Reset(ID_DEBUGGER_EXCBREAKPOINTS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"CPU Exception breakpoints...");
|
||||
//Item.SetItemEnabled(CPURunning);
|
||||
DebugMenu.push_back(Item);
|
||||
|
||||
/* Debugger - Symbols
|
||||
****************/
|
||||
Item.Reset(ID_DEBUGGER_SYMBOLS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Symbols...");
|
||||
|
|
|
@ -40,7 +40,7 @@ enum MainMenuID
|
|||
ID_DEBUGGER_TLBENTRIES, ID_DEBUGGER_BREAKPOINTS, ID_DEBUGGER_MEMORY, ID_DEBUGGER_R4300REGISTERS,
|
||||
ID_DEBUGGER_INTERRUPT_SP, ID_DEBUGGER_INTERRUPT_SI, ID_DEBUGGER_INTERRUPT_AI, ID_DEBUGGER_INTERRUPT_VI,
|
||||
ID_DEBUGGER_INTERRUPT_PI, ID_DEBUGGER_INTERRUPT_DP, ID_DEBUGGER_SCRIPTS, ID_DEBUGGER_SYMBOLS, ID_DEBUGGER_DMALOG,
|
||||
ID_DEBUGGER_CPULOG, ID_DEBUGGER_STACKTRACE, ID_DEBUGGER_STACKVIEW, ID_DEBUG_ENANCEMENT,
|
||||
ID_DEBUGGER_EXCBREAKPOINTS, ID_DEBUGGER_CPULOG, ID_DEBUGGER_STACKTRACE, ID_DEBUGGER_STACKVIEW, ID_DEBUG_ENANCEMENT,
|
||||
|
||||
// App logging
|
||||
ID_DEBUGGER_APPLOG_FLUSH, ID_DEBUGGER_TRACE_MD5, ID_DEBUGGER_TRACE_SETTINGS, ID_DEBUGGER_TRACE_UNKNOWN, ID_DEBUGGER_TRACE_APPINIT,
|
||||
|
|
|
@ -1319,6 +1319,30 @@ BEGIN
|
|||
PUSHBUTTON "Export",IDC_BTN_EXPORT,360,7,56,13
|
||||
END
|
||||
|
||||
IDD_Debugger_ExceptionBP DIALOGEX 0, 0, 213, 107
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "CPU Exception Breakpoints"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "Interrupt",IDC_CHK_INT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,78,11
|
||||
CONTROL "TLB Mod",IDC_CHK_MOD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,18,78,11
|
||||
CONTROL "Read TLB Miss",IDC_CHK_RMISS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,28,80,11
|
||||
CONTROL "Write TLB Miss",IDC_CHK_WMISS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,38,80,11
|
||||
CONTROL "Read Address Error",IDC_CHK_RADE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,48,76,11
|
||||
CONTROL "Write Address Error",IDC_CHK_WADE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,58,78,11
|
||||
CONTROL "Instruction Bus Error",IDC_CHK_IBE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,68,79,11
|
||||
CONTROL "Data Bus Error",IDC_CHK_DBE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,78,59,11
|
||||
CONTROL "SYSCALL",IDC_CHK_SYSCALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,59,11
|
||||
CONTROL "BREAK",IDC_CHK_BREAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,8,59,11
|
||||
CONTROL "Illegal Instruction",IDC_CHK_II,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,18,71,11
|
||||
CONTROL "Coprocessor Unusable",IDC_CHK_CPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,28,86,11
|
||||
CONTROL "Overflow",IDC_CHK_OV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,38,59,11
|
||||
CONTROL "Trap exception",IDC_CHK_TRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,48,59,11
|
||||
CONTROL "Virt. Coherency on Inst. fetch",IDC_CHK_VCEI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,58,107,11
|
||||
CONTROL "Floating Point Exception",IDC_CHK_FPE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,68,91,11
|
||||
CONTROL "Watchpoint reference",IDC_CHK_WATCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,78,87,11
|
||||
CONTROL "Virt. Coherency on data read",IDC_CHK_VCED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,88,106,11
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
@ -1765,6 +1789,14 @@ BEGIN
|
|||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 260
|
||||
END
|
||||
|
||||
IDD_Debugger_ExceptionBP, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 206
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 100
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
@ -1991,6 +2023,15 @@ BEGIN
|
|||
0
|
||||
END
|
||||
|
||||
IDD_Debugger_RegCOP0 AFX_DIALOG_LAYOUT
|
||||
BEGIN
|
||||
0
|
||||
END
|
||||
|
||||
IDD_Debugger_ExceptionBP AFX_DIALOG_LAYOUT
|
||||
BEGIN
|
||||
0
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
|
|
@ -81,7 +81,8 @@
|
|||
#define IDD_Enhancement_Config 202
|
||||
#define IDD_Enhancement_Edit 203
|
||||
#define IDD_Debugger_CPULog 204
|
||||
#define VERSION_BUILD 781
|
||||
#define IDD_Debugger_ExceptionBP 207
|
||||
#define VERSION_BUILD 816
|
||||
#define IDC_MENU_ITEM_TEXT 1000
|
||||
#define IDC_CLOSE_BUTTON 1001
|
||||
#define IDC_LIST2 1003
|
||||
|
@ -623,6 +624,25 @@
|
|||
#define IDC_BUFFSIZE_EDIT 1457
|
||||
#define IDC_REGSTATES_GRP 1458
|
||||
#define IDC_BTN_EXPORT 1461
|
||||
#define IDC_CHK_INT 1462
|
||||
#define IDC_CHK_MOD 1463
|
||||
#define IDC_CHK_RMISS 1464
|
||||
#define IDC_CHK_WMISS 1465
|
||||
#define IDC_CHK_RADE 1466
|
||||
#define IDC_CHK_WADE 1467
|
||||
#define IDC_CHECK7 1468
|
||||
#define IDC_CHK_IBE 1468
|
||||
#define IDC_CHK_DBE 1469
|
||||
#define IDC_CHK_SYSCALL 1470
|
||||
#define IDC_CHK_BREAK 1471
|
||||
#define IDC_CHK_II 1472
|
||||
#define IDC_CHK_CPU 1473
|
||||
#define IDC_CHK_OV 1474
|
||||
#define IDC_CHK_TRAP 1475
|
||||
#define IDC_CHK_VCEI 1476
|
||||
#define IDC_CHK_FPE 1477
|
||||
#define IDC_CHK_WATCH 1478
|
||||
#define IDC_CHK_VCED 1479
|
||||
#define ID_POPUP_SHOWINMEMORYVIEWER 40005
|
||||
#define ID_POPUPMENU_PLAYGAMEWITHDISK 40008
|
||||
#define ID_POPUPMENU_ADDSYMBOL 40013
|
||||
|
@ -660,9 +680,9 @@
|
|||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 206
|
||||
#define _APS_NEXT_RESOURCE_VALUE 209
|
||||
#define _APS_NEXT_COMMAND_VALUE 40043
|
||||
#define _APS_NEXT_CONTROL_VALUE 1462
|
||||
#define _APS_NEXT_CONTROL_VALUE 1480
|
||||
#define _APS_NEXT_SYMED_VALUE 102
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue