Merge pull request #1144 from lioncash/remove
common: Get rid of debug_interface.h
This commit is contained in:
commit
ef622a07ff
@ -32,7 +32,6 @@ set(HEADERS
|
|||||||
common_funcs.h
|
common_funcs.h
|
||||||
common_paths.h
|
common_paths.h
|
||||||
common_types.h
|
common_types.h
|
||||||
debug_interface.h
|
|
||||||
emu_window.h
|
emu_window.h
|
||||||
file_util.h
|
file_util.h
|
||||||
hash.h
|
hash.h
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
// Licensed under GPLv2 or any later version
|
// Licensed under GPLv2 or any later version
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include "common/debug_interface.h"
|
|
||||||
#include "common/break_points.h"
|
#include "common/break_points.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
|
|
||||||
@ -101,92 +100,3 @@ void BreakPoints::Clear()
|
|||||||
|
|
||||||
m_BreakPoints.clear();
|
m_BreakPoints.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
MemChecks::TMemChecksStr MemChecks::GetStrings() const
|
|
||||||
{
|
|
||||||
TMemChecksStr mcs;
|
|
||||||
for (auto memcheck : m_MemChecks)
|
|
||||||
{
|
|
||||||
std::stringstream mc;
|
|
||||||
mc << std::hex << memcheck.StartAddress;
|
|
||||||
mc << " " << (memcheck.bRange ? memcheck.EndAddress : memcheck.StartAddress) << " "
|
|
||||||
<< (memcheck.bRange ? "n" : "")
|
|
||||||
<< (memcheck.OnRead ? "r" : "")
|
|
||||||
<< (memcheck.OnWrite ? "w" : "")
|
|
||||||
<< (memcheck.Log ? "l" : "")
|
|
||||||
<< (memcheck.Break ? "p" : "");
|
|
||||||
mcs.push_back(mc.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
return mcs;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MemChecks::AddFromStrings(const TMemChecksStr& mcs)
|
|
||||||
{
|
|
||||||
for (auto mcs_item : mcs)
|
|
||||||
{
|
|
||||||
TMemCheck mc;
|
|
||||||
std::stringstream mcstr;
|
|
||||||
mcstr << std::hex << mcs_item;
|
|
||||||
mcstr >> mc.StartAddress;
|
|
||||||
mc.bRange = mcs_item.find("n") != mcs_item.npos;
|
|
||||||
mc.OnRead = mcs_item.find("r") != mcs_item.npos;
|
|
||||||
mc.OnWrite = mcs_item.find("w") != mcs_item.npos;
|
|
||||||
mc.Log = mcs_item.find("l") != mcs_item.npos;
|
|
||||||
mc.Break = mcs_item.find("p") != mcs_item.npos;
|
|
||||||
if (mc.bRange)
|
|
||||||
mcstr >> mc.EndAddress;
|
|
||||||
else
|
|
||||||
mc.EndAddress = mc.StartAddress;
|
|
||||||
Add(mc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MemChecks::Add(const TMemCheck& rMemoryCheck)
|
|
||||||
{
|
|
||||||
if (GetMemCheck(rMemoryCheck.StartAddress) == 0)
|
|
||||||
m_MemChecks.push_back(rMemoryCheck);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MemChecks::Remove(u32 Address)
|
|
||||||
{
|
|
||||||
auto cond = [&Address](const TMemCheck& mc) { return mc.StartAddress == Address; };
|
|
||||||
auto it = std::find_if(m_MemChecks.begin(), m_MemChecks.end(), cond);
|
|
||||||
if (it != m_MemChecks.end())
|
|
||||||
m_MemChecks.erase(it);
|
|
||||||
}
|
|
||||||
|
|
||||||
TMemCheck *MemChecks::GetMemCheck(u32 address)
|
|
||||||
{
|
|
||||||
for (auto i = m_MemChecks.begin(); i != m_MemChecks.end(); ++i)
|
|
||||||
{
|
|
||||||
if (i->bRange)
|
|
||||||
{
|
|
||||||
if (address >= i->StartAddress && address <= i->EndAddress)
|
|
||||||
return &(*i);
|
|
||||||
}
|
|
||||||
else if (i->StartAddress == address)
|
|
||||||
return &(*i);
|
|
||||||
}
|
|
||||||
|
|
||||||
// none found
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TMemCheck::Action(DebugInterface *debug_interface, u32 iValue, u32 addr,
|
|
||||||
bool write, int size, u32 pc)
|
|
||||||
{
|
|
||||||
if ((write && OnWrite) || (!write && OnRead))
|
|
||||||
{
|
|
||||||
if (Log)
|
|
||||||
{
|
|
||||||
LOG_DEBUG(Debug_Breakpoint, "CHK %08x (%s) %s%i %0*x at %08x (%s)",
|
|
||||||
pc, debug_interface->getDescription(pc).c_str(),
|
|
||||||
write ? "Write" : "Read", size*8, size*2, iValue, addr,
|
|
||||||
debug_interface->getDescription(addr).c_str()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (Break)
|
|
||||||
debug_interface->breakNow();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -18,31 +18,6 @@ struct TBreakPoint
|
|||||||
bool bTemporary;
|
bool bTemporary;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TMemCheck
|
|
||||||
{
|
|
||||||
TMemCheck():
|
|
||||||
StartAddress(0), EndAddress(0),
|
|
||||||
bRange(false), OnRead(false), OnWrite(false),
|
|
||||||
Log(false), Break(false), numHits(0)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
u32 StartAddress;
|
|
||||||
u32 EndAddress;
|
|
||||||
|
|
||||||
bool bRange;
|
|
||||||
|
|
||||||
bool OnRead;
|
|
||||||
bool OnWrite;
|
|
||||||
|
|
||||||
bool Log;
|
|
||||||
bool Break;
|
|
||||||
|
|
||||||
u32 numHits;
|
|
||||||
|
|
||||||
void Action(DebugInterface *dbg_interface, u32 iValue, u32 addr,
|
|
||||||
bool write, int size, u32 pc);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Code breakpoints.
|
// Code breakpoints.
|
||||||
class BreakPoints
|
class BreakPoints
|
||||||
{
|
{
|
||||||
@ -73,27 +48,3 @@ private:
|
|||||||
TBreakPoints m_BreakPoints;
|
TBreakPoints m_BreakPoints;
|
||||||
u32 m_iBreakOnCount;
|
u32 m_iBreakOnCount;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Memory breakpoints
|
|
||||||
class MemChecks
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef std::vector<TMemCheck> TMemChecks;
|
|
||||||
typedef std::vector<std::string> TMemChecksStr;
|
|
||||||
|
|
||||||
TMemChecks m_MemChecks;
|
|
||||||
|
|
||||||
const TMemChecks& GetMemChecks() { return m_MemChecks; }
|
|
||||||
|
|
||||||
TMemChecksStr GetStrings() const;
|
|
||||||
void AddFromStrings(const TMemChecksStr& mcs);
|
|
||||||
|
|
||||||
void Add(const TMemCheck& rMemoryCheck);
|
|
||||||
|
|
||||||
// memory breakpoint
|
|
||||||
TMemCheck *GetMemCheck(u32 address);
|
|
||||||
void Remove(u32 _Address);
|
|
||||||
|
|
||||||
void Clear() { m_MemChecks.clear(); };
|
|
||||||
};
|
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class DebugInterface
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
virtual ~DebugInterface() {}
|
|
||||||
|
|
||||||
public:
|
|
||||||
virtual void disasm(unsigned int /*address*/, char *dest, int /*max_size*/) {strcpy(dest, "NODEBUGGER");}
|
|
||||||
virtual void getRawMemoryString(int /*memory*/, unsigned int /*address*/, char *dest, int /*max_size*/) {strcpy(dest, "NODEBUGGER");}
|
|
||||||
virtual int getInstructionSize(int /*instruction*/) {return 1;}
|
|
||||||
virtual bool isAlive() {return true;}
|
|
||||||
virtual bool isBreakpoint(unsigned int /*address*/) {return false;}
|
|
||||||
virtual void setBreakpoint(unsigned int /*address*/){}
|
|
||||||
virtual void clearBreakpoint(unsigned int /*address*/){}
|
|
||||||
virtual void clearAllBreakpoints() {}
|
|
||||||
virtual void toggleBreakpoint(unsigned int /*address*/){}
|
|
||||||
virtual bool isMemCheck(unsigned int /*address*/) {return false;}
|
|
||||||
virtual void toggleMemCheck(unsigned int /*address*/){}
|
|
||||||
virtual unsigned int readMemory(unsigned int /*address*/){return 0;}
|
|
||||||
virtual void writeExtraMemory(int /*memory*/, unsigned int /*value*/, unsigned int /*address*/) {}
|
|
||||||
virtual unsigned int readExtraMemory(int /*memory*/, unsigned int /*address*/){return 0;}
|
|
||||||
virtual unsigned int readInstruction(unsigned int /*address*/){return 0;}
|
|
||||||
virtual unsigned int getPC() {return 0;}
|
|
||||||
virtual void setPC(unsigned int /*address*/) {}
|
|
||||||
virtual void step() {}
|
|
||||||
virtual void runToBreakpoint() {}
|
|
||||||
virtual void breakNow() {}
|
|
||||||
virtual void insertBLR(unsigned int /*address*/, unsigned int /*value*/) {}
|
|
||||||
virtual void showJitResults(unsigned int /*address*/) {};
|
|
||||||
virtual int getColor(unsigned int /*address*/){return 0xFFFFFFFF;}
|
|
||||||
virtual std::string getDescription(unsigned int /*address*/) = 0;
|
|
||||||
};
|
|
Loading…
Reference in New Issue
Block a user