From 54b37b9baef669f1ac70d429b1d4251d2a3a6aa0 Mon Sep 17 00:00:00 2001 From: Colin Senner Date: Sun, 12 Jul 2026 23:49:58 -0700 Subject: [PATCH] fixes an issue where you cannot step over int3 instructions even with Skip INT3 Stepping enabled --- TitanEngine/TitanEngine.Debugger.DebugLoop.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp b/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp index d11889f..1dad859 100644 --- a/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp +++ b/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp @@ -601,6 +601,10 @@ __declspec(dllexport) void TITCALL DebugLoop() ULONG_PTR exceptionAddress = (ULONG_PTR)DBGEvent.u.Exception.ExceptionRecord.ExceptionAddress; if(recentlyDeletedBpx.find(exceptionAddress) != recentlyDeletedBpx.end()) + unsigned char currentByte = 0xCC; + MemoryReadSafe(dbgProcessInformation.hProcess, (void*)exceptionAddress, ¤tByte, 1, nullptr); + + if(currentByte != 0xCC && recentlyDeletedBpx.find(exceptionAddress) != recentlyDeletedBpx.end()) { //breakpoint was recently deleted - handle the stale event gracefully hActiveThread = EngineOpenThread(THREAD_GETSETSUSPEND, false, DBGEvent.dwThreadId);