# Conflicts:
#	Source/Project64/UserInterface/UIResources.rc
#	Source/Project64/UserInterface/resource.h
This commit is contained in:
zilmar 2019-01-20 09:02:18 +10:30
commit e974576c00
23 changed files with 306 additions and 60 deletions

View File

@ -152,7 +152,6 @@ void CSettings::LogLevelChanged(void)
void CSettings::ReadSettings(void)
{
bool SyncAudio = m_Set_SyncAudio ? GetSystemSetting(m_Set_SyncAudio) != 0 : false;
bool bLimitFPS = m_Set_LimitFPS ? GetSystemSetting(m_Set_LimitFPS) != 0 : true;
m_Volume = GetSetting(Set_Volume);
@ -163,7 +162,7 @@ void CSettings::ReadSettings(void)
m_FPSBuffer = GetSetting(Set_FPSBuffer) != 0;
m_FullSpeed = m_Set_FullSpeed ? GetSystemSetting(m_Set_FullSpeed) != 0 : false;
m_SyncAudio = ((!m_advanced_options || bLimitFPS) && SyncAudio && m_FullSpeed);
m_SyncAudio = (!m_advanced_options || bLimitFPS);
if (m_Set_log_dir != 0)
{

View File

@ -51,7 +51,7 @@ void SoundDriverBase::AI_LenChanged(uint8_t *start, uint32_t length)
WriteTrace(TraceAudioDriver, TraceDebug, "Start");
// Bleed off some of this buffer to smooth out audio
if (length < m_MaxBufferSize && g_settings->SyncAudio())
if (g_settings->SyncAudio() || !g_settings->FullSpeed())
{
while ((m_BufferRemaining) == m_MaxBufferSize)
{

View File

@ -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;
};

View File

@ -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)

View File

@ -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));

View File

@ -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);
}

View File

@ -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;

View File

@ -255,6 +255,7 @@ enum SettingID
Debugger_AutoRefreshMemoryView,
Debugger_CPULoggingEnabled,
Debugger_CPULogBufferSize,
Debugger_ExceptionBreakpoints,
//Trace
Debugger_TraceMD5,

View File

@ -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" />

View File

@ -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">

View File

@ -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)

View File

@ -74,6 +74,7 @@ enum UISettingID
DebuggerUI_StackTracePos,
DebuggerUI_SymbolsPos,
DebuggerUI_TLBPos,
DebuggerUI_ExceptionBPPos
};
void RegisterUISettings (void);

View File

@ -469,11 +469,17 @@ const char* CDebugCommandsView::GetCodeAddressNotes(uint32_t vAddr)
return NULL;
}
void CDebugCommandsView::ShowAddress(uint32_t address, bool top)
void CDebugCommandsView::ShowAddress(uint32_t address, bool top, bool bUserInput)
{
if (top == TRUE)
{
m_StartAddress = address;
m_StartAddress = address - address % 4;
if (!bUserInput)
{
m_bIgnoreAddrChange = true;
m_AddressEdit.SetValue(address, false, true);
}
if (!isStepping())
{
@ -494,7 +500,7 @@ void CDebugCommandsView::ShowAddress(uint32_t address, bool top)
if (bOutOfView)
{
m_StartAddress = address;
m_StartAddress = address - address % 4;
m_bIgnoreAddrChange = true;
m_AddressEdit.SetValue(address, false, true);
}
@ -1246,17 +1252,6 @@ LRESULT CDebugCommandsView::OnPopupmenuClearBP(WORD /*wNotifyCode*/, WORD /*wID*
return FALSE;
}
void CDebugCommandsView::GotoEnteredAddress()
{
char text[9];
m_AddressEdit.GetWindowTextA(text, 9);
DWORD address = strtoul(text, NULL, 16);
address = address - address % 4;
ShowAddress(address, TRUE);
}
void CDebugCommandsView::BeginOpEdit(uint32_t address)
{
uint32_t opcode;
@ -1310,7 +1305,10 @@ LRESULT CDebugCommandsView::OnAddrChanged(WORD /*wNotifyCode*/, WORD /*wID*/, HW
m_bIgnoreAddrChange = false;
return 0;
}
GotoEnteredAddress();
uint32_t address = m_AddressEdit.GetValue();
ShowAddress(address, TRUE, TRUE);
return 0;
}

View File

@ -81,7 +81,7 @@ public:
CDebugCommandsView(CDebuggerUI * debugger, SyncEvent &StepEvent);
virtual ~CDebugCommandsView(void);
void ShowAddress(uint32_t address, bool top);
void ShowAddress(uint32_t address, bool top, bool bUserInput = false);
void ShowPIRegTab();
void Reset();
@ -217,7 +217,6 @@ private:
void BeginOpEdit(uint32_t address);
void EndOpEdit();
void GotoEnteredAddress();
void RefreshBreakpointList();
void RemoveSelectedBreakpoints();

View File

@ -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();
}

View File

@ -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()
};

View File

@ -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 (CDebugSettings::ExceptionBreakpoints() != 0)
{
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;

View File

@ -16,3 +16,4 @@
#include "Debugger-CPULogView.h"
#include "Debugger-StackView.h"
#include "Debugger-StackTrace.h"
#include "Debugger-ExceptionBreakpoints.h"

View File

@ -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,6 +92,7 @@ protected:
void TLBChanged(void);
void CPUStepStarted(void);
void CPUStep(void);
void CPUStepEnded(void);
void FrameDrawn(void);
private:
@ -107,6 +110,7 @@ private:
CDebugCPULogView * m_CPULogView;
CDebugStackTrace * m_StackTrace;
CDebugStackView * m_StackView;
CDebugExcBreakpoints * m_ExcBreakpoints;
CBreakpoints * m_Breakpoints;
CScriptSystem * m_ScriptSystem;

View File

@ -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...");

View File

@ -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,

View File

@ -1332,6 +1332,30 @@ BEGIN
PUSHBUTTON "Cancel",IDCANCEL,65,114,50,14
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
/////////////////////////////////////////////////////////////////////////////
//
@ -1785,6 +1809,14 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 128
END
IDD_Debugger_ExceptionBP, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 206
TOPMARGIN, 7
BOTTOMMARGIN, 100
END
END
#endif // APSTUDIO_INVOKED
@ -2021,6 +2053,15 @@ BEGIN
0
END
IDD_Debugger_RegCOP0 AFX_DIALOG_LAYOUT
BEGIN
0
END
IDD_Debugger_ExceptionBP AFX_DIALOG_LAYOUT
BEGIN
0
END
/////////////////////////////////////////////////////////////////////////////
//

View File

@ -78,6 +78,7 @@
#define IDD_Enhancement_Edit 203
#define IDD_Debugger_CPULog 204
#define IDD_Enhancement_GS 205
#define IDD_Debugger_ExceptionBP 207
#define IDC_MENU_ITEM_TEXT 1000
#define IDC_CLOSE_BUTTON 1001
#define IDC_LIST2 1003
@ -621,6 +622,25 @@
#define IDC_REGSTATES_GRP 1458
#define IDC_BTN_EXPORT 1461
#define IDC_BTN_GAMESHARK 1462
#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
@ -658,9 +678,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 207
#define _APS_NEXT_RESOURCE_VALUE 209
#define _APS_NEXT_COMMAND_VALUE 40043
#define _APS_NEXT_CONTROL_VALUE 1463
#define _APS_NEXT_CONTROL_VALUE 1480
#define _APS_NEXT_SYMED_VALUE 102
#endif
#endif