From 21e146bc23ac1178208010f923ff252bc8e8df68 Mon Sep 17 00:00:00 2001 From: mrexodia Date: Fri, 28 Apr 2017 01:06:58 +0200 Subject: [PATCH] directly use thread context manipulation for StepInto --- TitanEngine/TitanEngine.Debugger.Control.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/TitanEngine/TitanEngine.Debugger.Control.cpp b/TitanEngine/TitanEngine.Debugger.Control.cpp index 344fd0a..5a749a6 100644 --- a/TitanEngine/TitanEngine.Debugger.Control.cpp +++ b/TitanEngine/TitanEngine.Debugger.Control.cpp @@ -4,6 +4,7 @@ #include "Global.Handle.h" #include "Global.Threader.h" #include "Global.Librarian.h" +#include "Global.Engine.h" __declspec(dllexport) void TITCALL ForceClose() { @@ -62,10 +63,12 @@ __declspec(dllexport) void TITCALL StepInto(LPVOID StepCallBack) } else { - ULONG_PTR ueContext = NULL; - ueContext = (ULONG_PTR)GetContextData(UE_EFLAGS); - ueContext |= UE_TRAP_FLAG; - SetContextData(UE_EFLAGS, ueContext); + CONTEXT myDBGContext; + HANDLE hActiveThread = EngineOpenThread(THREAD_GETSETSUSPEND, false, DBGEvent.dwThreadId); + myDBGContext.ContextFlags = CONTEXT_CONTROL; + GetThreadContext(hActiveThread, &myDBGContext); + myDBGContext.EFlags |= UE_TRAP_FLAG; + SetThreadContext(hActiveThread, &myDBGContext); engineStepActive = true; engineStepCallBack = StepCallBack; engineStepCount = 0;