From a730e782f5ab45ce4397671c5764834cc0a25c88 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 4 Jun 2022 18:30:56 -0700 Subject: [PATCH] Fixed Get Debug Alloc Information pausing --- IDEHelper/Debugger.h | 1 + IDEHelper/HotScanner.cpp | 4 ++-- IDEHelper/WinDebugger.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Debugger.h b/IDEHelper/Debugger.h index 564ee980..984bd03c 100644 --- a/IDEHelper/Debugger.h +++ b/IDEHelper/Debugger.h @@ -189,6 +189,7 @@ enum DbgHotResolveFlags : uint8 DbgHotResolveFlag_None = 0, DbgHotResolveFlag_ActiveMethods = 1, DbgHotResolveFlag_Allocations = 2, + DbgHotResolveFlag_KeepThreadState = 4 }; enum DbgMemoryFlags : uint8 diff --git a/IDEHelper/HotScanner.cpp b/IDEHelper/HotScanner.cpp index 5e8536df..d88baccf 100644 --- a/IDEHelper/HotScanner.cpp +++ b/IDEHelper/HotScanner.cpp @@ -338,7 +338,7 @@ void DbgHotScanner::ScanRoot(addr_target rootPtr, int memKind) void DbgHotScanner::Scan(DbgHotResolveFlags flags) { auto prevRunState = mDebugger->mRunState; - if (mDebugger->mRunState == RunState_Running) + if ((mDebugger->mRunState == RunState_Running) && ((flags & DbgHotResolveFlag_KeepThreadState) == 0)) { mDebugger->ThreadRestorePause(NULL, NULL); mDebugger->mRunState = RunState_Paused; @@ -379,7 +379,7 @@ void DbgHotScanner::Scan(DbgHotResolveFlags flags) ScanRoot(mDbgGCData.mRawRootPtr, 1); } - if (prevRunState == RunState_Running) + if ((prevRunState == RunState_Running) && ((flags & DbgHotResolveFlag_KeepThreadState) == 0)) { mDebugger->ThreadRestoreUnpause(); mDebugger->mRunState = prevRunState; diff --git a/IDEHelper/WinDebugger.cpp b/IDEHelper/WinDebugger.cpp index 11153ae3..3945753e 100644 --- a/IDEHelper/WinDebugger.cpp +++ b/IDEHelper/WinDebugger.cpp @@ -1220,7 +1220,7 @@ String WinDebugger::GetDbgAllocInfo() mHotResolveData = new DbgHotResolveData(); DbgHotScanner* hotScanner = new DbgHotScanner(this); - hotScanner->Scan(DbgHotResolveFlag_Allocations); + hotScanner->Scan((DbgHotResolveFlags)(DbgHotResolveFlag_Allocations | DbgHotResolveFlag_KeepThreadState)); delete hotScanner; String result;