mirror of
				https://github.com/yuzu-emu/yuzu.git
				synced 2025-11-04 11:03:42 +00:00 
			
		
		
		
	break_points: cleaned up, added find_ifs
				
					
				
			This commit is contained in:
		
							parent
							
								
									5a7c3ad194
								
							
						
					
					
						commit
						e3efc613fd
					
				@ -9,19 +9,21 @@
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
 | 
			
		||||
bool BreakPoints::IsAddressBreakPoint(u32 _iAddress)
 | 
			
		||||
bool BreakPoints::IsAddressBreakPoint(u32 iAddress)
 | 
			
		||||
{
 | 
			
		||||
    for (auto breakpoint : m_BreakPoints)
 | 
			
		||||
        if (breakpoint.iAddress == _iAddress)
 | 
			
		||||
            return true;
 | 
			
		||||
    auto cond = [&iAddress](const TBreakPoint& bp) { return bp.iAddress == iAddress; };
 | 
			
		||||
    auto it   = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
 | 
			
		||||
    if (it != m_BreakPoints.end())
 | 
			
		||||
        return true;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool BreakPoints::IsTempBreakPoint(u32 _iAddress)
 | 
			
		||||
bool BreakPoints::IsTempBreakPoint(u32 iAddress)
 | 
			
		||||
{
 | 
			
		||||
    for (auto breakpoint : m_BreakPoints)
 | 
			
		||||
        if (breakpoint.iAddress == _iAddress && breakpoint.bTemporary)
 | 
			
		||||
            return true;
 | 
			
		||||
    auto cond = [&iAddress](const TBreakPoint& bp) { return bp.iAddress == iAddress && bp.bTemporary; };
 | 
			
		||||
    auto it   = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
 | 
			
		||||
    if (it != m_BreakPoints.end())
 | 
			
		||||
        return true;
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -83,16 +85,10 @@ void BreakPoints::Add(u32 em_address, bool temp)
 | 
			
		||||
 | 
			
		||||
void BreakPoints::Remove(u32 em_address)
 | 
			
		||||
{
 | 
			
		||||
    for (auto i = m_BreakPoints.begin(); i != m_BreakPoints.end(); ++i)
 | 
			
		||||
    {
 | 
			
		||||
        if (i->iAddress == em_address)
 | 
			
		||||
        {
 | 
			
		||||
            m_BreakPoints.erase(i);
 | 
			
		||||
            //if (jit)
 | 
			
		||||
            //    jit->GetBlockCache()->InvalidateICache(em_address, 4);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    auto cond = [&em_address](const TBreakPoint& bp) { return bp.iAddress == em_address; };
 | 
			
		||||
    auto it   = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
 | 
			
		||||
    if (it != m_BreakPoints.end())
 | 
			
		||||
        m_BreakPoints.erase(it);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void BreakPoints::Clear()
 | 
			
		||||
@ -106,7 +102,7 @@ void BreakPoints::Clear()
 | 
			
		||||
    //        }
 | 
			
		||||
    //    );
 | 
			
		||||
    //}
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    m_BreakPoints.clear();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -118,10 +114,10 @@ MemChecks::TMemChecksStr MemChecks::GetStrings() const
 | 
			
		||||
        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.bRange  ? "n" : "")
 | 
			
		||||
            << (memcheck.OnRead  ? "r" : "")
 | 
			
		||||
            << (memcheck.OnWrite ? "w" : "")
 | 
			
		||||
            << (memcheck.Log     ? "l" : "")
 | 
			
		||||
            << (memcheck.Break   ? "p" : "");
 | 
			
		||||
        mcs.push_back(mc.str());
 | 
			
		||||
    }
 | 
			
		||||
@ -150,22 +146,18 @@ void MemChecks::AddFromStrings(const TMemChecksStr& mcs)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MemChecks::Add(const TMemCheck& _rMemoryCheck)
 | 
			
		||||
void MemChecks::Add(const TMemCheck& rMemoryCheck)
 | 
			
		||||
{
 | 
			
		||||
    if (GetMemCheck(_rMemoryCheck.StartAddress) == 0)
 | 
			
		||||
        m_MemChecks.push_back(_rMemoryCheck);
 | 
			
		||||
    if (GetMemCheck(rMemoryCheck.StartAddress) == 0)
 | 
			
		||||
        m_MemChecks.push_back(rMemoryCheck);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MemChecks::Remove(u32 _Address)
 | 
			
		||||
void MemChecks::Remove(u32 Address)
 | 
			
		||||
{
 | 
			
		||||
    for (auto i = m_MemChecks.begin(); i != m_MemChecks.end(); ++i)
 | 
			
		||||
    {
 | 
			
		||||
        if (i->StartAddress == _Address)
 | 
			
		||||
        {
 | 
			
		||||
            m_MemChecks.erase(i);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    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)
 | 
			
		||||
 | 
			
		||||
@ -14,32 +14,33 @@ class DebugInterface;
 | 
			
		||||
 | 
			
		||||
struct TBreakPoint
 | 
			
		||||
{
 | 
			
		||||
    u32        iAddress;
 | 
			
		||||
    bool    bOn;
 | 
			
		||||
    bool    bTemporary;
 | 
			
		||||
    u32  iAddress;
 | 
			
		||||
    bool bOn;
 | 
			
		||||
    bool bTemporary;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct TMemCheck
 | 
			
		||||
{
 | 
			
		||||
    TMemCheck() {
 | 
			
		||||
        numHits = 0;
 | 
			
		||||
        StartAddress = EndAddress = 0;
 | 
			
		||||
        bRange = OnRead = OnWrite = Log = Break = false;
 | 
			
		||||
    }
 | 
			
		||||
    u32 StartAddress;
 | 
			
		||||
    u32 EndAddress;
 | 
			
		||||
    TMemCheck():
 | 
			
		||||
        StartAddress(0), EndAddress(0),
 | 
			
		||||
        bRange(false), OnRead(false), OnWrite(false),
 | 
			
		||||
        Log(false), Break(false), numHits(0)
 | 
			
		||||
    { }
 | 
			
		||||
 | 
			
		||||
    bool    bRange;
 | 
			
		||||
    u32  StartAddress;
 | 
			
		||||
    u32  EndAddress;
 | 
			
		||||
 | 
			
		||||
    bool    OnRead;
 | 
			
		||||
    bool    OnWrite;
 | 
			
		||||
    bool bRange;
 | 
			
		||||
 | 
			
		||||
    bool    Log;
 | 
			
		||||
    bool    Break;
 | 
			
		||||
    bool OnRead;
 | 
			
		||||
    bool OnWrite;
 | 
			
		||||
 | 
			
		||||
    u32        numHits;
 | 
			
		||||
    bool Log;
 | 
			
		||||
    bool Break;
 | 
			
		||||
 | 
			
		||||
    void Action(DebugInterface *dbg_interface, u32 _iValue, u32 addr,
 | 
			
		||||
    u32  numHits;
 | 
			
		||||
 | 
			
		||||
    void Action(DebugInterface *dbg_interface, u32 iValue, u32 addr,
 | 
			
		||||
                bool write, int size, u32 pc);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -56,22 +57,22 @@ public:
 | 
			
		||||
    void AddFromStrings(const TBreakPointsStr& bps);
 | 
			
		||||
 | 
			
		||||
    // is address breakpoint
 | 
			
		||||
    bool IsAddressBreakPoint(u32 _iAddress);
 | 
			
		||||
    bool IsTempBreakPoint(u32 _iAddress);
 | 
			
		||||
    bool IsAddressBreakPoint(u32 iAddress);
 | 
			
		||||
    bool IsTempBreakPoint(u32 iAddress);
 | 
			
		||||
 | 
			
		||||
    // Add BreakPoint
 | 
			
		||||
    void Add(u32 em_address, bool temp=false);
 | 
			
		||||
    void Add(const TBreakPoint& bp);
 | 
			
		||||
 | 
			
		||||
    // Remove Breakpoint
 | 
			
		||||
    void Remove(u32 _iAddress);
 | 
			
		||||
    void Remove(u32 iAddress);
 | 
			
		||||
    void Clear();
 | 
			
		||||
 | 
			
		||||
    void DeleteByAddress(u32 _Address);
 | 
			
		||||
    void DeleteByAddress(u32 Address);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    TBreakPoints m_BreakPoints;
 | 
			
		||||
    u32    m_iBreakOnCount;
 | 
			
		||||
    u32          m_iBreakOnCount;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -89,7 +90,7 @@ public:
 | 
			
		||||
    TMemChecksStr GetStrings() const;
 | 
			
		||||
    void AddFromStrings(const TMemChecksStr& mcs);
 | 
			
		||||
 | 
			
		||||
    void Add(const TMemCheck& _rMemoryCheck);
 | 
			
		||||
    void Add(const TMemCheck& rMemoryCheck);
 | 
			
		||||
 | 
			
		||||
    // memory breakpoint
 | 
			
		||||
    TMemCheck *GetMemCheck(u32 address);
 | 
			
		||||
@ -99,4 +100,3 @@ public:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user