[Project64] Cleanup Debugger-MemoryDump.cpp
This commit is contained in:
parent
cf2d34fed3
commit
17fb11375e
|
@ -13,7 +13,7 @@
|
||||||
#include "DebuggerUI.h"
|
#include "DebuggerUI.h"
|
||||||
|
|
||||||
CDumpMemory::CDumpMemory(CDebuggerUI * debugger) :
|
CDumpMemory::CDumpMemory(CDebuggerUI * debugger) :
|
||||||
CDebugDialog<CDumpMemory>(debugger)
|
CDebugDialog<CDumpMemory>(debugger)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,74 +51,74 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/,
|
||||||
EndDialog(0);
|
EndDialog(0);
|
||||||
break;
|
break;
|
||||||
case IDC_BTN_CHOOSE_FILE:
|
case IDC_BTN_CHOOSE_FILE:
|
||||||
{
|
{
|
||||||
char FileName[_MAX_PATH], Directory[_MAX_PATH];
|
char FileName[_MAX_PATH], Directory[_MAX_PATH];
|
||||||
OPENFILENAME openfilename;
|
OPENFILENAME openfilename;
|
||||||
|
|
||||||
memset(&FileName, 0, sizeof(FileName));
|
memset(&FileName, 0, sizeof(FileName));
|
||||||
memset(&openfilename, 0, sizeof(openfilename));
|
memset(&openfilename, 0, sizeof(openfilename));
|
||||||
strcpy(Directory, CPath(CPath::MODULE_DIRECTORY));
|
strcpy(Directory, CPath(CPath::MODULE_DIRECTORY));
|
||||||
openfilename.lStructSize = sizeof(openfilename);
|
openfilename.lStructSize = sizeof(openfilename);
|
||||||
openfilename.hwndOwner = m_hWnd;
|
openfilename.hwndOwner = m_hWnd;
|
||||||
openfilename.lpstrFilter = "Text file (*.txt)\0*.txt;\0All files (*.*)\0*.*\0";
|
openfilename.lpstrFilter = "Text file (*.txt)\0*.txt;\0All files (*.*)\0*.*\0";
|
||||||
openfilename.lpstrFile = FileName;
|
openfilename.lpstrFile = FileName;
|
||||||
openfilename.lpstrInitialDir = Directory;
|
openfilename.lpstrInitialDir = Directory;
|
||||||
openfilename.nMaxFile = MAX_PATH;
|
openfilename.nMaxFile = MAX_PATH;
|
||||||
openfilename.Flags = OFN_HIDEREADONLY;
|
openfilename.Flags = OFN_HIDEREADONLY;
|
||||||
g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_DumpMemory);
|
g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_DumpMemory);
|
||||||
if (GetOpenFileName(&openfilename))
|
if (GetOpenFileName(&openfilename))
|
||||||
{
|
|
||||||
char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
|
|
||||||
_splitpath(FileName, drive, dir, fname, ext);
|
|
||||||
if (strlen(ext) == 0)
|
|
||||||
{
|
|
||||||
strcat(FileName, ".txt");
|
|
||||||
}
|
|
||||||
SetDlgItemText(IDC_FILENAME, FileName);
|
|
||||||
}
|
|
||||||
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case IDOK:
|
|
||||||
{
|
{
|
||||||
TCHAR FileName[MAX_PATH];
|
char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
|
||||||
int CurrentFormatSel = SendDlgItemMessage(IDC_FORMAT, CB_GETCURSEL, 0, 0);
|
_splitpath(FileName, drive, dir, fname, ext);
|
||||||
DumpFormat Format = (DumpFormat)SendDlgItemMessage(IDC_FORMAT, CB_GETITEMDATA, CurrentFormatSel, 0);
|
if (strlen(ext) == 0)
|
||||||
DWORD StartPC = m_StartAddress.GetValue();
|
|
||||||
DWORD EndPC = m_EndAddress.GetValue();
|
|
||||||
DWORD DumpPC = m_PC.GetValue();
|
|
||||||
GetDlgItemText(IDC_FILENAME, FileName, sizeof(FileName));
|
|
||||||
if (strlen(FileName) == 0)
|
|
||||||
{
|
{
|
||||||
g_Notify->DisplayError(L"Please Choose target file");
|
strcat(FileName, ".txt");
|
||||||
::SetFocus(GetDlgItem(IDC_FILENAME));
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
if (SendDlgItemMessage(IDC_USE_ALT_PC, BM_GETSTATE, 0, 0) != BST_CHECKED)
|
SetDlgItemText(IDC_FILENAME, FileName);
|
||||||
{
|
|
||||||
DumpPC = g_Reg->m_PROGRAM_COUNTER;
|
|
||||||
}
|
|
||||||
//disable buttons
|
|
||||||
::EnableWindow(GetDlgItem(IDC_E_START_ADDR), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDC_E_END_ADDR), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDC_E_ALT_PC), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDC_USE_ALT_PC), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDC_FILENAME), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDC_BTN_CHOOSE_FILE), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDC_FORMAT), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDOK), FALSE);
|
|
||||||
::EnableWindow(GetDlgItem(IDCANCEL), FALSE);
|
|
||||||
g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_DumpMemory);
|
|
||||||
if (!DumpMemory(FileName, Format, StartPC, EndPC, DumpPC))
|
|
||||||
{
|
|
||||||
//enable buttons
|
|
||||||
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
|
|
||||||
}
|
}
|
||||||
EndDialog(0);
|
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
case IDOK:
|
||||||
|
{
|
||||||
|
TCHAR FileName[MAX_PATH];
|
||||||
|
int CurrentFormatSel = SendDlgItemMessage(IDC_FORMAT, CB_GETCURSEL, 0, 0);
|
||||||
|
DumpFormat Format = (DumpFormat)SendDlgItemMessage(IDC_FORMAT, CB_GETITEMDATA, CurrentFormatSel, 0);
|
||||||
|
DWORD StartPC = m_StartAddress.GetValue();
|
||||||
|
DWORD EndPC = m_EndAddress.GetValue();
|
||||||
|
DWORD DumpPC = m_PC.GetValue();
|
||||||
|
GetDlgItemText(IDC_FILENAME, FileName, sizeof(FileName));
|
||||||
|
if (strlen(FileName) == 0)
|
||||||
|
{
|
||||||
|
g_Notify->DisplayError(L"Please Choose target file");
|
||||||
|
::SetFocus(GetDlgItem(IDC_FILENAME));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (SendDlgItemMessage(IDC_USE_ALT_PC, BM_GETSTATE, 0, 0) != BST_CHECKED)
|
||||||
|
{
|
||||||
|
DumpPC = g_Reg->m_PROGRAM_COUNTER;
|
||||||
|
}
|
||||||
|
//disable buttons
|
||||||
|
::EnableWindow(GetDlgItem(IDC_E_START_ADDR), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_E_END_ADDR), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_E_ALT_PC), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_USE_ALT_PC), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_FILENAME), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_BTN_CHOOSE_FILE), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDC_FORMAT), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDOK), FALSE);
|
||||||
|
::EnableWindow(GetDlgItem(IDCANCEL), FALSE);
|
||||||
|
g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_DumpMemory);
|
||||||
|
if (!DumpMemory(FileName, Format, StartPC, EndPC, DumpPC))
|
||||||
|
{
|
||||||
|
//enable buttons
|
||||||
|
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
|
||||||
|
}
|
||||||
|
EndDialog(0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -128,30 +128,30 @@ bool CDumpMemory::DumpMemory(LPCSTR FileName, DumpFormat Format, DWORD StartPC,
|
||||||
switch (Format)
|
switch (Format)
|
||||||
{
|
{
|
||||||
case DisassemblyWithPC:
|
case DisassemblyWithPC:
|
||||||
|
{
|
||||||
|
CLog LogFile;
|
||||||
|
if (!LogFile.Open(FileName))
|
||||||
{
|
{
|
||||||
CLog LogFile;
|
g_Notify->DisplayError(stdstr_f("Failed to open\n%s", FileName).ToUTF16().c_str());
|
||||||
if (!LogFile.Open(FileName))
|
return false;
|
||||||
{
|
|
||||||
g_Notify->DisplayError(stdstr_f("Failed to open\n%s", FileName).ToUTF16().c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
LogFile.SetFlush(false);
|
|
||||||
LogFile.SetTruncateFile(false);
|
|
||||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
|
||||||
#ifdef legacycode
|
|
||||||
char Command[200];
|
|
||||||
for (COpcode OpCode(StartPC); OpCode.PC() < EndPC; OpCode.Next())
|
|
||||||
{
|
|
||||||
const char * szOpName = OpCode.OpcodeName();
|
|
||||||
OpCode.OpcodeParam(Command);
|
|
||||||
LogFile.LogF("%X: %-15s%s\r\n",OpCode.PC(),szOpName,Command);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
m_StartAddress.SetValue(StartPC, true, true);
|
|
||||||
m_EndAddress.SetValue(EndPC, true, true);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
break;
|
LogFile.SetFlush(false);
|
||||||
|
LogFile.SetTruncateFile(false);
|
||||||
|
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||||
|
#ifdef legacycode
|
||||||
|
char Command[200];
|
||||||
|
for (COpcode OpCode(StartPC); OpCode.PC() < EndPC; OpCode.Next())
|
||||||
|
{
|
||||||
|
const char * szOpName = OpCode.OpcodeName();
|
||||||
|
OpCode.OpcodeParam(Command);
|
||||||
|
LogFile.LogF("%X: %-15s%s\r\n",OpCode.PC(),szOpName,Command);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
m_StartAddress.SetValue(StartPC, true, true);
|
||||||
|
m_EndAddress.SetValue(EndPC, true, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
Loading…
Reference in New Issue