mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	break_points: cleaned up, added find_ifs
				
					
				
			This commit is contained in:
		
							parent
							
								
									5a7c3ad194
								
							
						
					
					
						commit
						e3efc613fd
					
				
					 2 changed files with 51 additions and 59 deletions
				
			
		|  | @ -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() | ||||
|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue