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 OpenSymbolsWindow(void) = 0;
|
||||||
virtual void OpenDMALogWindow(void) = 0;
|
virtual void OpenDMALogWindow(void) = 0;
|
||||||
virtual void OpenCPULogWindow(void) = 0;
|
virtual void OpenCPULogWindow(void) = 0;
|
||||||
|
virtual void OpenExcBreakpointsWindow(void) = 0;
|
||||||
virtual void OpenStackTraceWindow(void) = 0;
|
virtual void OpenStackTraceWindow(void) = 0;
|
||||||
virtual void OpenStackViewWindow(void) = 0;
|
virtual void OpenStackViewWindow(void) = 0;
|
||||||
virtual void TLBChanged(void) = 0;
|
virtual void TLBChanged(void) = 0;
|
||||||
|
@ -38,4 +39,5 @@ __interface CDebugger
|
||||||
|
|
||||||
virtual void CPUStepStarted(void) = 0;
|
virtual void CPUStepStarted(void) = 0;
|
||||||
virtual void CPUStep(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_Settings->SaveBool(Debugger_SteppingOps, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_Debugger->CPUStepStarted(); // may set stepping ops/skip op
|
||||||
|
|
||||||
if (isStepping())
|
if (isStepping())
|
||||||
{
|
{
|
||||||
g_Debugger->WaitForStep();
|
g_Debugger->WaitForStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bSkip = SkipOp();
|
if (SkipOp())
|
||||||
|
|
||||||
if (!bSkip)
|
|
||||||
{
|
|
||||||
g_Debugger->CPUStepStarted();
|
|
||||||
bSkip = SkipOp();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bSkip)
|
|
||||||
{
|
{
|
||||||
// Skip command if instructed by the debugger
|
// Skip command if instructed by the debugger
|
||||||
g_Settings->SaveBool(Debugger_SkipOp, false);
|
g_Settings->SaveBool(Debugger_SkipOp, false);
|
||||||
PROGRAM_COUNTER += 4;
|
PROGRAM_COUNTER += 4;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_Debugger->CPUStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER < 0x80380000)
|
/* if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER < 0x80380000)
|
||||||
|
@ -338,7 +334,7 @@ void CInterpreterCPU::ExecuteCPU()
|
||||||
_GPR[0].DW = 0; /* MIPS $zero hard-wired to 0 */
|
_GPR[0].DW = 0; /* MIPS $zero hard-wired to 0 */
|
||||||
NextTimer -= CountPerOp;
|
NextTimer -= CountPerOp;
|
||||||
|
|
||||||
if (CDebugSettings::HaveDebugger()) { g_Debugger->CPUStep(); }
|
if (CDebugSettings::HaveDebugger()) { g_Debugger->CPUStepEnded(); }
|
||||||
|
|
||||||
PROGRAM_COUNTER += 4;
|
PROGRAM_COUNTER += 4;
|
||||||
switch (R4300iOp::m_NextInstruction)
|
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_AutoRefreshMemoryView, new CSettingTypeApplication("Debugger", "Auto Refresh Memory View", true));
|
||||||
AddHandler(Debugger_CPULoggingEnabled, new CSettingTypeApplication("Debugger", "Enable CPU Logging", false));
|
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_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_DebugLanguage, new CSettingTypeApplication("Debugger", "Debug Language", false));
|
||||||
AddHandler(Debugger_ShowDivByZero, new CSettingTypeApplication("Debugger", "Show Div by zero", false));
|
AddHandler(Debugger_ShowDivByZero, new CSettingTypeApplication("Debugger", "Show Div by zero", false));
|
||||||
AddHandler(Debugger_AppLogFlush, new CSettingTypeApplication("Logging", "Log Auto Flush", (uint32_t)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_HaveReadBP = false;
|
||||||
bool CDebugSettings::m_bShowPifRamErrors = false;
|
bool CDebugSettings::m_bShowPifRamErrors = false;
|
||||||
bool CDebugSettings::m_bCPULoggingEnabled = false;
|
bool CDebugSettings::m_bCPULoggingEnabled = false;
|
||||||
|
uint32_t CDebugSettings::m_ExceptionBreakpoints = 0;
|
||||||
|
|
||||||
CDebugSettings::CDebugSettings()
|
CDebugSettings::CDebugSettings()
|
||||||
{
|
{
|
||||||
|
@ -49,6 +50,7 @@ CDebugSettings::CDebugSettings()
|
||||||
g_Settings->RegisterChangeCB(Debugger_WaitingForStep, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->RegisterChangeCB(Debugger_WaitingForStep, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
g_Settings->RegisterChangeCB(Debugger_ShowPifErrors, 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_CPULoggingEnabled, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
g_Settings->RegisterChangeCB(Debugger_ExceptionBreakpoints, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
|
||||||
RefreshSettings();
|
RefreshSettings();
|
||||||
}
|
}
|
||||||
|
@ -71,6 +73,7 @@ CDebugSettings::~CDebugSettings()
|
||||||
g_Settings->UnregisterChangeCB(Debugger_WaitingForStep, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->UnregisterChangeCB(Debugger_WaitingForStep, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
g_Settings->UnregisterChangeCB(Debugger_ShowPifErrors, 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_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_HaveReadBP = m_HaveDebugger && g_Settings->LoadBool(Debugger_ReadBPExists);
|
||||||
m_bShowPifRamErrors = m_HaveDebugger && g_Settings->LoadBool(Debugger_ShowPifErrors);
|
m_bShowPifRamErrors = m_HaveDebugger && g_Settings->LoadBool(Debugger_ShowPifErrors);
|
||||||
m_bCPULoggingEnabled = m_HaveDebugger && g_Settings->LoadBool(Debugger_CPULoggingEnabled);
|
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);
|
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 HaveReadBP(void) { return m_HaveReadBP; }
|
||||||
static inline bool bShowPifRamErrors(void) { return m_bShowPifRamErrors; }
|
static inline bool bShowPifRamErrors(void) { return m_bShowPifRamErrors; }
|
||||||
static inline bool bCPULoggingEnabled(void) { return m_bCPULoggingEnabled; }
|
static inline bool bCPULoggingEnabled(void) { return m_bCPULoggingEnabled; }
|
||||||
|
static inline uint32_t ExceptionBreakpoints(void) { return m_ExceptionBreakpoints; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void StaticRefreshSettings(CDebugSettings * _this)
|
static void StaticRefreshSettings(CDebugSettings * _this)
|
||||||
|
@ -55,6 +56,7 @@ private:
|
||||||
static bool m_HaveReadBP;
|
static bool m_HaveReadBP;
|
||||||
static bool m_bShowPifRamErrors;
|
static bool m_bShowPifRamErrors;
|
||||||
static bool m_bCPULoggingEnabled;
|
static bool m_bCPULoggingEnabled;
|
||||||
|
static uint32_t m_ExceptionBreakpoints;
|
||||||
|
|
||||||
static int32_t m_RefCount;
|
static int32_t m_RefCount;
|
||||||
static bool m_Registered;
|
static bool m_Registered;
|
||||||
|
|
|
@ -255,6 +255,7 @@ enum SettingID
|
||||||
Debugger_AutoRefreshMemoryView,
|
Debugger_AutoRefreshMemoryView,
|
||||||
Debugger_CPULoggingEnabled,
|
Debugger_CPULoggingEnabled,
|
||||||
Debugger_CPULogBufferSize,
|
Debugger_CPULogBufferSize,
|
||||||
|
Debugger_ExceptionBreakpoints,
|
||||||
|
|
||||||
//Trace
|
//Trace
|
||||||
Debugger_TraceMD5,
|
Debugger_TraceMD5,
|
||||||
|
|
|
@ -88,6 +88,7 @@
|
||||||
<ClCompile Include="UserInterface\Debugger\Debugger-AddSymbol.cpp" />
|
<ClCompile Include="UserInterface\Debugger\Debugger-AddSymbol.cpp" />
|
||||||
<ClCompile Include="UserInterface\Debugger\Debugger-Commands.cpp" />
|
<ClCompile Include="UserInterface\Debugger\Debugger-Commands.cpp" />
|
||||||
<ClCompile Include="UserInterface\Debugger\Debugger-DMALogView.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-MemoryDump.cpp" />
|
||||||
<ClCompile Include="UserInterface\Debugger\Debugger-MemorySearch.cpp" />
|
<ClCompile Include="UserInterface\Debugger\Debugger-MemorySearch.cpp" />
|
||||||
<ClCompile Include="UserInterface\Debugger\Debugger-RegisterTabs.cpp" />
|
<ClCompile Include="UserInterface\Debugger\Debugger-RegisterTabs.cpp" />
|
||||||
|
@ -151,6 +152,7 @@
|
||||||
<ClInclude Include="UserInterface\Debugger\Debugger-AddSymbol.h" />
|
<ClInclude Include="UserInterface\Debugger\Debugger-AddSymbol.h" />
|
||||||
<ClInclude Include="UserInterface\Debugger\Debugger-Commands.h" />
|
<ClInclude Include="UserInterface\Debugger\Debugger-Commands.h" />
|
||||||
<ClInclude Include="UserInterface\Debugger\Debugger-DMALogView.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-MemoryDump.h" />
|
||||||
<ClInclude Include="UserInterface\Debugger\Debugger-MemorySearch.h" />
|
<ClInclude Include="UserInterface\Debugger\Debugger-MemorySearch.h" />
|
||||||
<ClInclude Include="UserInterface\Debugger\Debugger-RegisterTabs.h" />
|
<ClInclude Include="UserInterface\Debugger\Debugger-RegisterTabs.h" />
|
||||||
|
|
|
@ -228,6 +228,9 @@
|
||||||
<ClCompile Include="UserInterface\Debugger\Debugger-CPULogView.cpp">
|
<ClCompile Include="UserInterface\Debugger\Debugger-CPULogView.cpp">
|
||||||
<Filter>Source Files\User Interface Source\Debugger Source</Filter>
|
<Filter>Source Files\User Interface Source\Debugger Source</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="UserInterface\Debugger\Debugger-ExceptionBreakpoints.cpp">
|
||||||
|
<Filter>Source Files\User Interface Source\Debugger Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="UserInterface\resource.h">
|
<ClInclude Include="UserInterface\resource.h">
|
||||||
|
@ -437,6 +440,9 @@
|
||||||
<ClInclude Include="UserInterface\Debugger\Debugger-CPULogView.h">
|
<ClInclude Include="UserInterface\Debugger\Debugger-CPULogView.h">
|
||||||
<Filter>Header Files\User Interface Headers\Debugger Headers</Filter>
|
<Filter>Header Files\User Interface Headers\Debugger Headers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="UserInterface\Debugger\Debugger-ExceptionBreakpoints.h">
|
||||||
|
<Filter>Header Files\User Interface Headers\Debugger Headers</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="res\divider.cur">
|
<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_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_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_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)
|
void UISettingsSaveBool(UISettingID Type, bool Value)
|
||||||
|
|
|
@ -74,6 +74,7 @@ enum UISettingID
|
||||||
DebuggerUI_StackTracePos,
|
DebuggerUI_StackTracePos,
|
||||||
DebuggerUI_SymbolsPos,
|
DebuggerUI_SymbolsPos,
|
||||||
DebuggerUI_TLBPos,
|
DebuggerUI_TLBPos,
|
||||||
|
DebuggerUI_ExceptionBPPos
|
||||||
};
|
};
|
||||||
|
|
||||||
void RegisterUISettings (void);
|
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_StackView(NULL),
|
||||||
m_DMALogView(NULL),
|
m_DMALogView(NULL),
|
||||||
m_CPULogView(NULL),
|
m_CPULogView(NULL),
|
||||||
|
m_ExcBreakpoints(NULL),
|
||||||
m_DMALog(NULL),
|
m_DMALog(NULL),
|
||||||
m_CPULog(NULL),
|
m_CPULog(NULL),
|
||||||
m_StepEvent(false)
|
m_StepEvent(false)
|
||||||
|
@ -65,6 +66,7 @@ CDebuggerUI::~CDebuggerUI(void)
|
||||||
delete m_StackTrace;
|
delete m_StackTrace;
|
||||||
delete m_DMALogView;
|
delete m_DMALogView;
|
||||||
delete m_CPULogView;
|
delete m_CPULogView;
|
||||||
|
delete m_ExcBreakpoints;
|
||||||
delete m_DMALog;
|
delete m_DMALog;
|
||||||
delete m_CPULog;
|
delete m_CPULog;
|
||||||
|
|
||||||
|
@ -179,6 +181,12 @@ void CDebuggerUI::Debug_Reset(void)
|
||||||
delete m_StackView;
|
delete m_StackView;
|
||||||
m_StackView = NULL;
|
m_StackView = NULL;
|
||||||
}
|
}
|
||||||
|
if (m_ExcBreakpoints)
|
||||||
|
{
|
||||||
|
m_ExcBreakpoints->HideWindow();
|
||||||
|
delete m_ExcBreakpoints;
|
||||||
|
m_ExcBreakpoints = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDebuggerUI::OpenMemoryDump()
|
void CDebuggerUI::OpenMemoryDump()
|
||||||
|
@ -344,6 +352,15 @@ void CDebuggerUI::OpenCPULogWindow(void)
|
||||||
m_CPULogView->ShowWindow();
|
m_CPULogView->ShowWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CDebuggerUI::OpenExcBreakpointsWindow(void)
|
||||||
|
{
|
||||||
|
if (m_ExcBreakpoints == NULL)
|
||||||
|
{
|
||||||
|
m_ExcBreakpoints = new CDebugExcBreakpoints(this);
|
||||||
|
}
|
||||||
|
m_ExcBreakpoints->ShowWindow();
|
||||||
|
}
|
||||||
|
|
||||||
void CDebuggerUI::OpenStackTraceWindow(void)
|
void CDebuggerUI::OpenStackTraceWindow(void)
|
||||||
{
|
{
|
||||||
if (m_StackTrace == NULL)
|
if (m_StackTrace == NULL)
|
||||||
|
@ -604,14 +621,13 @@ void CDebuggerUI::TLBChanged()
|
||||||
Debug_RefreshTLBWindow();
|
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)
|
void CDebuggerUI::HandleCPUException(void)
|
||||||
{
|
{
|
||||||
uint32_t pc = g_Reg->m_PROGRAM_COUNTER;
|
int exc = (g_Reg->CAUSE_REGISTER >> 2) & 0x1F;
|
||||||
int exc = g_Reg->CAUSE_REGISTER & 0x7C;
|
|
||||||
|
|
||||||
// ignore interrupt, syscall, coprocessor unusable, watch
|
if ((CDebugSettings::ExceptionBreakpoints() & (1 << exc)))
|
||||||
if (exc != EXC_INT && exc != EXC_SYSCALL && exc != EXC_CPU && exc != EXC_WATCH)
|
|
||||||
{
|
{
|
||||||
if (CDebugSettings::bCPULoggingEnabled())
|
if (CDebugSettings::bCPULoggingEnabled())
|
||||||
{
|
{
|
||||||
|
@ -688,12 +704,19 @@ void CDebuggerUI::CPUStepStarted()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pc == 0x80000000 || pc == 0x80000080 ||
|
if (CDebugSettings::ExceptionBreakpoints() != 0)
|
||||||
pc == 0xA0000100 || pc == 0x80000180)
|
|
||||||
{
|
{
|
||||||
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())
|
if (bCPULoggingEnabled())
|
||||||
{
|
{
|
||||||
m_CPULog->PushState();
|
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;
|
OPCODE Opcode = R4300iOp::m_Opcode;
|
||||||
uint32_t op = Opcode.op;
|
uint32_t op = Opcode.op;
|
||||||
|
|
|
@ -15,4 +15,5 @@
|
||||||
#include "Debugger-DMALogView.h"
|
#include "Debugger-DMALogView.h"
|
||||||
#include "Debugger-CPULogView.h"
|
#include "Debugger-CPULogView.h"
|
||||||
#include "Debugger-StackView.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 CDebugCPULogView;
|
||||||
class CDebugStackView;
|
class CDebugStackView;
|
||||||
class CDebugStackTrace;
|
class CDebugStackTrace;
|
||||||
|
class CDebugExcBreakpoints;
|
||||||
|
|
||||||
class CCPULog;
|
class CCPULog;
|
||||||
class CDMALog;
|
class CDMALog;
|
||||||
|
@ -61,6 +62,7 @@ public:
|
||||||
void OpenDMALogWindow(void);
|
void OpenDMALogWindow(void);
|
||||||
void OpenCPULogWindow(void);
|
void OpenCPULogWindow(void);
|
||||||
void Debug_RefreshCPULogWindow(void);
|
void Debug_RefreshCPULogWindow(void);
|
||||||
|
void OpenExcBreakpointsWindow(void);
|
||||||
|
|
||||||
bool ExecutionBP(uint32_t address);
|
bool ExecutionBP(uint32_t address);
|
||||||
bool ReadBP8(uint32_t address);
|
bool ReadBP8(uint32_t address);
|
||||||
|
@ -90,23 +92,25 @@ protected:
|
||||||
void TLBChanged(void);
|
void TLBChanged(void);
|
||||||
void CPUStepStarted(void);
|
void CPUStepStarted(void);
|
||||||
void CPUStep(void);
|
void CPUStep(void);
|
||||||
|
void CPUStepEnded(void);
|
||||||
void FrameDrawn(void);
|
void FrameDrawn(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CDebuggerUI(const CDebuggerUI&); // Disable copy constructor
|
CDebuggerUI(const CDebuggerUI&); // Disable copy constructor
|
||||||
CDebuggerUI& operator=(const CDebuggerUI&); // Disable assignment
|
CDebuggerUI& operator=(const CDebuggerUI&); // Disable assignment
|
||||||
|
|
||||||
CDumpMemory * m_MemoryDump;
|
CDumpMemory * m_MemoryDump;
|
||||||
CDebugMemoryView * m_MemoryView;
|
CDebugMemoryView * m_MemoryView;
|
||||||
CDebugMemorySearch * m_MemorySearch;
|
CDebugMemorySearch * m_MemorySearch;
|
||||||
CDebugTlb * m_DebugTLB;
|
CDebugTlb * m_DebugTLB;
|
||||||
CDebugCommandsView * m_CommandsView;
|
CDebugCommandsView * m_CommandsView;
|
||||||
CDebugScripts * m_Scripts;
|
CDebugScripts * m_Scripts;
|
||||||
CDebugSymbols * m_Symbols;
|
CDebugSymbols * m_Symbols;
|
||||||
CDebugDMALogView * m_DMALogView;
|
CDebugDMALogView * m_DMALogView;
|
||||||
CDebugCPULogView * m_CPULogView;
|
CDebugCPULogView * m_CPULogView;
|
||||||
CDebugStackTrace * m_StackTrace;
|
CDebugStackTrace * m_StackTrace;
|
||||||
CDebugStackView * m_StackView;
|
CDebugStackView * m_StackView;
|
||||||
|
CDebugExcBreakpoints * m_ExcBreakpoints;
|
||||||
|
|
||||||
CBreakpoints * m_Breakpoints;
|
CBreakpoints * m_Breakpoints;
|
||||||
CScriptSystem * m_ScriptSystem;
|
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_SYMBOLS: g_Debugger->OpenSymbolsWindow(); break;
|
||||||
case ID_DEBUGGER_DMALOG: g_Debugger->OpenDMALogWindow(); break;
|
case ID_DEBUGGER_DMALOG: g_Debugger->OpenDMALogWindow(); break;
|
||||||
case ID_DEBUGGER_CPULOG: g_Debugger->OpenCPULogWindow(); 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_STACKTRACE: g_Debugger->OpenStackTraceWindow(); break;
|
||||||
case ID_DEBUGGER_STACKVIEW: g_Debugger->OpenStackViewWindow(); break;
|
case ID_DEBUGGER_STACKVIEW: g_Debugger->OpenStackViewWindow(); break;
|
||||||
case ID_CURRENT_SAVE_DEFAULT:
|
case ID_CURRENT_SAVE_DEFAULT:
|
||||||
|
@ -1132,6 +1133,12 @@ void CMainMenu::FillOutMenu(HMENU hMenu)
|
||||||
//Item.SetItemEnabled(CPURunning);
|
//Item.SetItemEnabled(CPURunning);
|
||||||
DebugMenu.push_back(Item);
|
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
|
/* Debugger - Symbols
|
||||||
****************/
|
****************/
|
||||||
Item.Reset(ID_DEBUGGER_SYMBOLS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"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_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_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_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
|
// App logging
|
||||||
ID_DEBUGGER_APPLOG_FLUSH, ID_DEBUGGER_TRACE_MD5, ID_DEBUGGER_TRACE_SETTINGS, ID_DEBUGGER_TRACE_UNKNOWN, ID_DEBUGGER_TRACE_APPINIT,
|
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
|
PUSHBUTTON "Export",IDC_BTN_EXPORT,360,7,56,13
|
||||||
END
|
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
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 260
|
BOTTOMMARGIN, 260
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDD_Debugger_ExceptionBP, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 206
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 100
|
||||||
|
END
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
@ -1991,6 +2023,15 @@ BEGIN
|
||||||
0
|
0
|
||||||
END
|
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_Config 202
|
||||||
#define IDD_Enhancement_Edit 203
|
#define IDD_Enhancement_Edit 203
|
||||||
#define IDD_Debugger_CPULog 204
|
#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_MENU_ITEM_TEXT 1000
|
||||||
#define IDC_CLOSE_BUTTON 1001
|
#define IDC_CLOSE_BUTTON 1001
|
||||||
#define IDC_LIST2 1003
|
#define IDC_LIST2 1003
|
||||||
|
@ -623,6 +624,25 @@
|
||||||
#define IDC_BUFFSIZE_EDIT 1457
|
#define IDC_BUFFSIZE_EDIT 1457
|
||||||
#define IDC_REGSTATES_GRP 1458
|
#define IDC_REGSTATES_GRP 1458
|
||||||
#define IDC_BTN_EXPORT 1461
|
#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_POPUP_SHOWINMEMORYVIEWER 40005
|
||||||
#define ID_POPUPMENU_PLAYGAMEWITHDISK 40008
|
#define ID_POPUPMENU_PLAYGAMEWITHDISK 40008
|
||||||
#define ID_POPUPMENU_ADDSYMBOL 40013
|
#define ID_POPUPMENU_ADDSYMBOL 40013
|
||||||
|
@ -660,9 +680,9 @@
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#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_COMMAND_VALUE 40043
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1462
|
#define _APS_NEXT_CONTROL_VALUE 1480
|
||||||
#define _APS_NEXT_SYMED_VALUE 102
|
#define _APS_NEXT_SYMED_VALUE 102
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue