From a32d18d9625d7fc8f86e4e3cc08ed7429d14768f Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 20 Sep 2019 09:21:29 -0700 Subject: [PATCH] Debugger fixes Removing some debugger remote-requests --- BeefBoot/BeefBoot.cpp | 3 +- BeefLibs/corlib/src/IO/Directory.bf | 8 +- BeefRT/BeefRT.vcxproj | 1 + BeefTools/DocPrep/BeefProj.toml | 2 +- BeefySysLib/platform/PlatformInterface.h | 2 +- BeefySysLib/platform/win/CrashCatcher.cpp | 21 +- IDE/BeefProj.toml | 2 +- IDE/mintest/BeefProj.toml | 2 +- IDE/mintest/src/main.bf | 64 +---- IDE/src/IDEApp.bf | 40 ++- IDE/src/Project.bf | 15 +- IDE/src/ui/SourceViewPanel.bf | 47 +++- IDEHelper/COFF.cpp | 45 +++- IDEHelper/Profiler.cpp | 98 +------ IDEHelper/WinDebugger.cpp | 48 ++-- IDEHelper/WinDebugger.h | 14 +- bin/Beefy.vsmacros | Bin 258048 -> 0 bytes bin/BeefyDepsMerge.py | 47 ---- bin/BeefyLLDB.py | 67 ----- bin/machine.config | 310 ---------------------- bin/symstore.exe | Bin 104080 -> 0 bytes 21 files changed, 198 insertions(+), 638 deletions(-) delete mode 100644 bin/Beefy.vsmacros delete mode 100644 bin/BeefyDepsMerge.py delete mode 100644 bin/BeefyLLDB.py delete mode 100644 bin/machine.config delete mode 100644 bin/symstore.exe diff --git a/BeefBoot/BeefBoot.cpp b/BeefBoot/BeefBoot.cpp index 21728602..0d129ba8 100644 --- a/BeefBoot/BeefBoot.cpp +++ b/BeefBoot/BeefBoot.cpp @@ -12,6 +12,7 @@ #include "BeefySysLib/util/Deque.h" #include "BeefySysLib/util/HashSet.h" #include "BeefySysLib/util/MultiHashSet.h" +#include "CrashCatcher.h" //#include //#include @@ -27,7 +28,7 @@ using namespace Beefy; BF_IMPORT void BF_CALLTYPE Debugger_ProgramDone(); int main(int argc, char* argv[]) -{ +{ BfpSystem_SetCommandLine(argc, argv); BfpThread_SetName(NULL, "MainThread", NULL); diff --git a/BeefLibs/corlib/src/IO/Directory.bf b/BeefLibs/corlib/src/IO/Directory.bf index 54a8758e..30f22eeb 100644 --- a/BeefLibs/corlib/src/IO/Directory.bf +++ b/BeefLibs/corlib/src/IO/Directory.bf @@ -48,19 +48,17 @@ namespace System.IO return .Ok; } - public static Result DelTree(StringView path) + public static Result DelTree(StringView path) { if (path.Length <= 2) - return .Err; + return .Err(.InvalidParameter); if ((path[0] != '/') && (path[0] != '\\')) { if (path[1] == ':') { if (path.Length < 3) - return .Err; + return .Err(.InvalidParameter); } - else - return .Err; } for (var fileEntry in Directory.EnumerateDirectories(path)) diff --git a/BeefRT/BeefRT.vcxproj b/BeefRT/BeefRT.vcxproj index 6e597827..eaa4f4c0 100644 --- a/BeefRT/BeefRT.vcxproj +++ b/BeefRT/BeefRT.vcxproj @@ -548,6 +548,7 @@ $(SolutionDir)\IDE\dist\$(TargetName).dll $(SolutionDir)\IDE\dist\$(TargetName).lib BeefRT.def + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) diff --git a/BeefTools/DocPrep/BeefProj.toml b/BeefTools/DocPrep/BeefProj.toml index 4927d8d2..d7686d6f 100644 --- a/BeefTools/DocPrep/BeefProj.toml +++ b/BeefTools/DocPrep/BeefProj.toml @@ -7,4 +7,4 @@ StartupObject = "DocPrep.Program" [Configs.Debug.Win64] TargetDirectory = "$(WorkspaceDir)/../../IDE/dist" OtherLinkFlags = "$(LinkFlags) IDEHelper64_d.lib" -DebugCommandArguments = "c:\\beef\\BeefLibs\\corlib\\_test c:\\beef\\hugo\\temp" +DebugCommandArguments = "c:\\beef\\BeefLibs\\corlib\\src c:\\temp\\beefdocs" diff --git a/BeefySysLib/platform/PlatformInterface.h b/BeefySysLib/platform/PlatformInterface.h index 161be12b..89f7b204 100644 --- a/BeefySysLib/platform/PlatformInterface.h +++ b/BeefySysLib/platform/PlatformInterface.h @@ -290,7 +290,7 @@ enum BfpSysDirectoryKind BfpSysDirectoryKind_AppData_LocalLow, BfpSysDirectoryKind_AppData_Roaming, BfpSysDirectoryKind_Programs, - BfpSysDirectoryKind_Programs_Common + BfpSysDirectoryKind_Programs_Common }; struct BfpFindFileData; diff --git a/BeefySysLib/platform/win/CrashCatcher.cpp b/BeefySysLib/platform/win/CrashCatcher.cpp index 0fc01f27..ff587941 100644 --- a/BeefySysLib/platform/win/CrashCatcher.cpp +++ b/BeefySysLib/platform/win/CrashCatcher.cpp @@ -1,5 +1,6 @@ #include "CrashCatcher.h" #include "../util/CritSect.h" +#include "../util/Dictionary.h" USING_NS_BF; @@ -593,6 +594,13 @@ static String ImageHelpWalk(PCONTEXT theContext, int theSkipCount) CONTEXT ctx = *theContext; + struct ModuleInfo + { + + }; + + Dictionary moduleInfoMap; + for (;;) { #ifdef BF64 @@ -635,7 +643,11 @@ static String ImageHelpWalk(PCONTEXT theContext, int theSkipCount) HANDLE hProcess = GetCurrentProcess(); - if (gSymGetSymFromAddr(hProcess, sf.AddrPC.Offset, &symDisplacement, pSymbol)) + bool forceFail = true; + + + + if ((gSymGetSymFromAddr(hProcess, sf.AddrPC.Offset, &symDisplacement, pSymbol)) && (!forceFail)) { char aUDName[256]; gUnDecorateSymbolName(pSymbol->Name, aUDName, 256, @@ -676,6 +688,13 @@ static String ImageHelpWalk(PCONTEXT theContext, int theSkipCount) uintptr section = 0, offset = 0; GetLogicalAddress((PVOID)sf.AddrPC.Offset, szModule, sizeof(szModule), section, offset); + + ModuleInfo* moduleInfo = NULL; + if (moduleInfoMap.TryAdd(szModule, NULL, &moduleInfo)) + { + + } + aDebugDump += StrFormat("%@ %@ %04X:%@ %s\r\n", sf.AddrFrame.Offset, sf.AddrPC.Offset, section, offset, GetFileName(szModule).c_str()); } diff --git a/IDE/BeefProj.toml b/IDE/BeefProj.toml index 81b8b4f9..0c78d4d2 100644 --- a/IDE/BeefProj.toml +++ b/IDE/BeefProj.toml @@ -53,7 +53,7 @@ TargetDirectory = "$(WorkspaceDir)/dist" TargetName = "BeefIDE_d2" OtherLinkFlags = "$(LinkFlags) Comdlg32.lib kernel32.lib user32.lib advapi32.lib shell32.lib IDEHelper64_d.lib BeefySysLib64_d.lib wsock32.lib" BeefLibType = "DynamicDebug" -DebugCommandArguments = "-workspace=c:\\beef_website\\samples\\SpaceGame" +DebugCommandArguments = "-workspace=c:\\beef\\ide\\mintest" DebugWorkingDirectory = "$(ProjectDir)\\dist" EnvironmentVars = ["_NO_DEBUG_HEAP=1"] diff --git a/IDE/mintest/BeefProj.toml b/IDE/mintest/BeefProj.toml index b0a340e4..31f48e53 100644 --- a/IDE/mintest/BeefProj.toml +++ b/IDE/mintest/BeefProj.toml @@ -66,4 +66,4 @@ Path = "../../../temp/test.txt" [[ProjectFolder.Items]] Type = "Folder" Path = "../../../temp/borf" -Source = ["a.txt"] +Source = ["a.txt"] \ No newline at end of file diff --git a/IDE/mintest/src/main.bf b/IDE/mintest/src/main.bf index 84fdce26..3d1c822c 100644 --- a/IDE/mintest/src/main.bf +++ b/IDE/mintest/src/main.bf @@ -174,68 +174,22 @@ namespace Hey.Dude.Bro return 111; } + public static void TestA() + { + int* a = null; + *a = 123; + } + public static int Main(String[] args) { - int* iPtr = null; - *iPtr = 123; - Blurg.Hey(); - /*while (true) + for (int i < 100) { - int a = 0; + PrintF("Hello 2!\n"); + Thread.Sleep(10); } - - int* iPtr = null; - *iPtr = 123;*/ - - GC.SetAutoCollectPeriod(20); - Thread.Sleep(1000); - - String str = scope .("Boops!"); - int len = str.GetLength(); - - GetVal(); - - Thread thread = scope .(new => Thread); - thread.Start(false); - - //Thread.Sleep(500); - - //Test2(1, 2, 3, 4); - - thread.Join(); - - RunLong(); - - str.Append("Hey yo!\nHey what's up\nHeef neef.\nSnoggles!"); - - str.Append( - """ - Hey, this is a bad ass string - Yep yep - What up! - """); - - Color clr = (.)123; - - int64 l; - - Florf fl = .(); - - for (int j < 100)//zzz - { - fl.Goof(); - - for (int i < 1000000000L) - { - int a = 3; - } - } - - //PrintF("%ld\n", foo((int32*)&l, &l)); - //return foo((int32*)&l, &l); return 1; } } diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 1c053926..b604dc44 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -2509,6 +2509,15 @@ namespace IDE { scope AutoBeefPerf("IDE.WorkspaceLoaded"); + if (!Environment.IsFileSystemCaseSensitive) + { + // Make sure we have the correct actual path + String newPath = new String(); + Path.GetActualPathName(mWorkspace.mDir, newPath); + delete mWorkspace.mDir; + mWorkspace.mDir = newPath; + } + List platforms = scope List(); platforms.Add(IDEApp.sPlatform32Name); platforms.Add(IDEApp.sPlatform64Name); @@ -6052,6 +6061,7 @@ namespace IDE SourceHash hash = default; int hashPos = filePath.IndexOf('#'); + bool checkForOldFileInfo = false; if (hashPos != -1) { let hashStr = StringView(filePath, hashPos + 1); @@ -6083,20 +6093,28 @@ namespace IDE if (hashKind == .None) hashKind = .MD5; - LoadTextFile(filePath, fileText, false, scope [&] () => { hash = SourceHash.Create(hashKind, fileText); }).IgnoreError(); + LoadTextFile(filePath, fileText, false, scope [&] () => { fileHash = SourceHash.Create(hashKind, fileText); }).IgnoreError(); if (fileHash != hash) - { - String outFileInfo = scope String(); - mDebugger.GetStackFrameOldFileInfo(mDebugger.mActiveCallStackIdx, outFileInfo); + checkForOldFileInfo = true; + } + } + else + { + if (!File.Exists(filePath)) + checkForOldFileInfo = true; + } - var args = outFileInfo.Split!('\n'); - if (args.Count == 3) - { - filePath.Set(args[0]); - loadCmd = scope:: String(args[1]); - } - } + if (checkForOldFileInfo) + { + String outFileInfo = scope String(); + mDebugger.GetStackFrameOldFileInfo(mDebugger.mActiveCallStackIdx, outFileInfo); + + var args = outFileInfo.Split!('\n'); + if (args.Count == 3) + { + filePath.Set(args[0]); + loadCmd = scope:: String(args[1]); } } diff --git a/IDE/src/Project.bf b/IDE/src/Project.bf index c9442bd8..f40a5760 100644 --- a/IDE/src/Project.bf +++ b/IDE/src/Project.bf @@ -1291,8 +1291,19 @@ namespace IDE if (!mProjectPath.IsEmpty) { mProjectDir.Clear(); - mProjectPath.Set(path); - IDEUtils.FixFilePath(mProjectPath); + mProjectPath.Clear(); + + if (!Environment.IsFileSystemCaseSensitive) + { + Path.GetActualPathName(path, mProjectPath); + } + + if (mProjectPath.IsEmpty) + { + mProjectPath.Set(path); + IDEUtils.FixFilePath(mProjectPath); + } + Path.GetDirectoryPath(mProjectPath, mProjectDir); if (structuredData.Load(ProjectFileName) case .Err) return false; diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index 32346931..79c3c30f 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -17,6 +17,7 @@ using IDE.Debugger; using IDE.Compiler; using System.Security.Cryptography; using IDE.util; +using Beefy2D.utils; namespace IDE.ui { @@ -94,10 +95,6 @@ namespace IDE.ui { if (tabbedView.mIsFillWidget) gApp.mActiveDocumentsTabbedView = tabbedView; - else - { - NOP!(); - } } var sourceEditWidgetContent = (SourceEditWidgetContent)mEditWidgetContent; @@ -365,6 +362,7 @@ namespace IDE.ui public int32 mClassifiedTextVersionId; public bool mLoadFailed; String mOldVerLoadCmd ~ delete _; + HTTPRequest mOldVerHTTPRequest ~ delete _; IDEApp.ExecutionInstance mOldVerLoadExecutionInstance ~ { if (_ != null) _.mAutoDelete = true; }; SourceFindTask mSourceFindTask ~ delete _; bool mWantsFastClassify; @@ -3141,14 +3139,20 @@ namespace IDE.ui bool isRepeat = mOldVerLoadCmd != null; CloseHeader(); - - mPanelHeader = new PanelHeader(); + if (mOldVerLoadCmd == null) mOldVerLoadCmd = new String(loadCmd); + if (loadCmd.StartsWith("http", .OrdinalIgnoreCase)) + { + LoadOldVer(); + return; + } // For testing a long command... //mOldVerLoadCmd.Set("/bin/sleep.exe 10"); + mPanelHeader = new PanelHeader(); + String fileName = scope String(); Path.GetFileName(mFilePath, fileName); String headerStr = scope String(); @@ -3191,9 +3195,18 @@ namespace IDE.ui void LoadOldVer() { - Debug.Assert(mOldVerLoadExecutionInstance == null); - mOldVerLoadExecutionInstance = gApp.DoRun(null, mOldVerLoadCmd, gApp.mInstallDir, .None); - mOldVerLoadExecutionInstance.mAutoDelete = false; + if (mOldVerLoadCmd.StartsWith("http", .OrdinalIgnoreCase)) + { + DeleteAndNullify!(mOldVerHTTPRequest); + mOldVerHTTPRequest = new HTTPRequest(); + mOldVerHTTPRequest.GetFile(mOldVerLoadCmd, mFilePath); + } + else + { + Debug.Assert(mOldVerLoadExecutionInstance == null); + mOldVerLoadExecutionInstance = gApp.DoRun(null, mOldVerLoadCmd, gApp.mInstallDir, .None); + mOldVerLoadExecutionInstance.mAutoDelete = false; + } CloseHeader(); @@ -3208,7 +3221,12 @@ namespace IDE.ui var button = mPanelHeader.AddButton("Cancel"); button.mOnMouseClick.Add(new (evt) => { - mOldVerLoadExecutionInstance.Cancel(); + if (mOldVerLoadExecutionInstance != null) + mOldVerLoadExecutionInstance.Cancel(); + if (mOldVerHTTPRequest != null) + { + DeleteAndNullify!(mOldVerHTTPRequest); + } }); button = mPanelHeader.AddButton("Always Run"); button.mOnMouseClick.Add(new (evt) => @@ -5376,6 +5394,15 @@ namespace IDE.ui } } + if (mOldVerHTTPRequest != null) + { + let result = mOldVerHTTPRequest.GetResult(); + if (result != .NotDone) + { + RetryLoad(); + } + } + UpdateMouseover(); var compiler = ResolveCompiler; diff --git a/IDEHelper/COFF.cpp b/IDEHelper/COFF.cpp index 650718c2..36c501bf 100644 --- a/IDEHelper/COFF.cpp +++ b/IDEHelper/COFF.cpp @@ -8,6 +8,7 @@ #include "BeefySysLib/Util/PerfTimer.h" #include "BeefySysLib/Util/Dictionary.h" #include "BeefySysLib/Util/BeefPerf.h" +#include "BeefySysLib/platform/PlatformHelper.h" #include "WinDebugger.h" #include "MiniDumpDebugger.h" #include "Linker/BlHash.h" @@ -6327,14 +6328,44 @@ String COFF::GetOldSourceCommand(const StringImpl& path) if (!matches) break; - String retVal; - retVal = defs["SRCSRVTRG"]; - retVal += "\n"; - retVal += defs["SRCSRVCMD"]; - retVal += "\n"; - retVal += defs["SRCSRVENV"]; - _Expand(retVal); + String& target = defs["SRCSRVTRG"]; + String& cmd = defs["SRCSRVCMD"]; + String& env = defs["SRCSRVENV"]; + _Expand(target); + _Expand(cmd); + _Expand(env); + + String retVal; + if ((cmd.IsEmpty()) && (target.StartsWith("HTTP", StringImpl::CompareKind_OrdinalIgnoreCase))) + { + String localFile; + + BfpFileResult result; + BFP_GETSTR_HELPER(localFile, result, BfpFile_GetTempPath(__STR, __STRLEN, &result)); + int dotPos = target.IndexOf("://"); + if (dotPos != -1) + { + localFile.Append("SymbolCache\\src\\"); + localFile.Append(StringView(target, dotPos + 3)); + localFile.Replace("/", "\\"); + } + + retVal = localFile; + retVal += "\n"; + retVal += target; + retVal += "\n"; + retVal += env; + } + else if (!cmd.IsWhitespace()) + { + retVal = target; + retVal += "\n"; + retVal += cmd; + retVal += "\n"; + retVal += env; + } + return retVal; } break; diff --git a/IDEHelper/Profiler.cpp b/IDEHelper/Profiler.cpp index cd49ab54..4a04b0c7 100644 --- a/IDEHelper/Profiler.cpp +++ b/IDEHelper/Profiler.cpp @@ -1,10 +1,6 @@ #include "Profiler.h" #include "DebugManager.h" -//#include -//::NtQuerySystemInformation(); #include - -//#include #include // UNICODE_STRING #define STATUS_INFO_LENGTH_MISMATCH 0xc0000004 @@ -120,7 +116,7 @@ static SYSTEM_PROCESS_INFORMATION* CaptureProcessInfo() ntdll = GetModuleHandle(path); if (ntdll == NULL) return NULL; - NtQuerySystemInformation = (NtQuerySystemInformation_t) GetProcAddress(ntdll, "NtQuerySystemInformation"); + NtQuerySystemInformation = (NtQuerySystemInformation_t)GetProcAddress(ntdll, "NtQuerySystemInformation"); uint allocSize = 1024; uint8* data = NULL; @@ -180,9 +176,6 @@ void DbgProfiler::ThreadProc() const int maxStackTrace = 1024; addr_target stackTrace[maxStackTrace]; - // Index zero is invalid - //mProfileAddrEntries.push_back(NULL); - DWORD prevSampleTick = timeGetTime(); uint32 accumMS = 0; @@ -201,7 +194,7 @@ void DbgProfiler::ThreadProc() mTotalActualSamples = 0; mTotalActiveSamplingMS = 0; - mAlloc.Clear(); + mAlloc.Clear(); mThreadInfo.Clear(); mThreadIdList.Clear(); mProfileAddrEntrySet.Clear(); @@ -211,7 +204,7 @@ void DbgProfiler::ThreadProc() mProfileProcEntries.Clear(); mProfileAddrToProcMap.Clear(); mProcMap.Clear(); - mUniqueProcSet.Clear(); + mUniqueProcSet.Clear(); mWantsClear = false; accumMS = 0; @@ -221,8 +214,7 @@ void DbgProfiler::ThreadProc() iterations++; DWORD startTick0 = timeGetTime(); idleThreadSet.Clear(); - - //SYSTEM_PROCESS_INFORMATION* processData = CaptureProcessInfo(); + SYSTEM_PROCESS_INFORMATION* processData = NULL; std::unique_ptr ptrDelete(processData); @@ -585,7 +577,7 @@ void DbgProfiler::HandlePendingEntries() } ProfileProcId* procId = NULL; - auto subProgram = mDebugger->mDebugTarget->FindSubProgram(addr); + auto subProgram = mDebugger->mDebugTarget->FindSubProgram(addr, DbgOnDemandKind_LocalOnly); while (stackTraceProcIdx < maxStackTrace) { if (subProgram != NULL) @@ -604,7 +596,7 @@ void DbgProfiler::HandlePendingEntries() { String symbolName; addr_target symbolOffset = 0; - if ((!mDebugger->mDebugTarget->FindSymbolAt(addr, &symbolName, &symbolOffset)) || (symbolOffset > 64 * 1024)) + if ((!mDebugger->mDebugTarget->FindSymbolAt(addr, &symbolName, &symbolOffset, NULL, false)) || (symbolOffset > 64 * 1024)) { auto dbgModule = mDebugger->mDebugTarget->FindDbgModuleForAddress(addr); if (dbgModule != NULL) @@ -647,89 +639,11 @@ void DbgProfiler::Process() int time = mTotalActiveSamplingMS; -// const int maxStackTrace = 1024; -// ProfileProcId* procStackTrace[maxStackTrace]; -// -// bool reverse = false; - BF_ASSERT(mProfileAddrEntries.IsEmpty()); mProfileAddrEntries.Resize(mProfileAddrEntrySet.size() + 1); for (auto& val : mProfileAddrEntrySet) mProfileAddrEntries[val.mEntryIdx] = &val; - -// for (int i = 0; i < (int)mProfileAddrEntries.size(); i++) -// mProfileAddrToProcMap.push_back(-1); - -// for (int addrEntryIdx = 0; addrEntryIdx < (int)mProfileAddrEntries.size(); addrEntryIdx++) -// { -// const ProfileAddrEntry* addrEntry = mProfileAddrEntries[addrEntryIdx]; -// if (addrEntry == NULL) -// continue; -// -// ProfileProcId** procStackTraceHead = reverse ? (procStackTrace + maxStackTrace) : procStackTrace; -// int stackTraceProcIdx = 0; -// for (int addrIdx = 0; addrIdx < addrEntry->mSize; addrIdx++) -// { -// addr_target addr = addrEntry->mData[addrIdx]; -// if (addrIdx > 0) -// { -// // To reference from SourcePC (calling address, not return address) -// addr--; -// } -// ProfileProcId* procId = NULL; -// -// auto subProgram = mDebugger->mDebugTarget->FindSubProgram(addr); -// while (stackTraceProcIdx < maxStackTrace) -// { -// if (subProgram != NULL) -// { -// ProfileProcId** procIdPtr; -// if (mProcMap.TryAdd(subProgram, NULL, &procIdPtr)) -// { -// String procName = subProgram->ToString(); -// procId = Get(procName); -// *procIdPtr = procId; -// } -// else -// procId = *procIdPtr; -// } -// else -// { -// String symbolName; -// addr_target symbolOffset = 0; -// if ((!mDebugger->mDebugTarget->FindSymbolAt(addr, &symbolName, &symbolOffset)) || (symbolOffset > 64 * 1024)) -// { -// auto dbgModule = mDebugger->mDebugTarget->FindDbgModuleForAddress(addr); -// if (dbgModule != NULL) -// symbolName += dbgModule->mDisplayName + "!"; -// symbolName += StrFormat("0x%@", addr); -// } -// -// procId = Get(symbolName); -// } -// -// if (reverse) -// *(--procStackTraceHead) = procId; -// else -// procStackTraceHead[stackTraceProcIdx] = procId; -// stackTraceProcIdx++; -// -// if (subProgram == NULL) -// break; -// if (subProgram->mInlineeInfo == NULL) -// break; -// subProgram = subProgram->mInlineeInfo->mInlineParent; -// } -// } -// -// auto procEntry = AddToSet(mProfileProcEntrySet, procStackTraceHead, stackTraceProcIdx); -// if (procEntry->mEntryIdx == -1) -// { -// procEntry->mEntryIdx = (int)mProfileProcEntrySet.size() - 1; // Start at '0' -// } -// mProfileAddrToProcMap[addrEntry->mEntryIdx] = procEntry->mEntryIdx; -// } BF_ASSERT(mProfileProcEntries.IsEmpty()); mProfileProcEntries.Resize(mProfileProcEntrySet.size()); diff --git a/IDEHelper/WinDebugger.cpp b/IDEHelper/WinDebugger.cpp index 12e93910..bfe9e736 100644 --- a/IDEHelper/WinDebugger.cpp +++ b/IDEHelper/WinDebugger.cpp @@ -1399,9 +1399,9 @@ bool WinDebugger::DoUpdate() dbgModule->PreCacheImage(); } - for (auto dbgModule : mPendingDebugInfoLoad) + for (auto kv : mPendingDebugInfoLoad) { - dbgModule->PreCacheDebugInfo(); + kv.mKey->PreCacheDebugInfo(); } while (!mPendingImageLoad.IsEmpty()) @@ -1412,26 +1412,21 @@ bool WinDebugger::DoUpdate() _ModuleChanged(dbgModule); } - while (!mPendingDebugInfoLoad.IsEmpty()) + if (!mPendingDebugInfoLoad.IsEmpty()) { - auto dbgModule = mPendingDebugInfoLoad.back(); - mPendingDebugInfoLoad.pop_back(); - dbgModule->RequestDebugInfo(); - // We do a "_ModuleChanged" even if the load failed, so we rehup the callstack and stop - // saying "" - _ModuleChanged(dbgModule); - } - - /*while (!mPendingDebugInfoRequests.IsEmpty()) - { - if ((!mPendingImageLoad.IsEmpty()) || (!mPendingDebugInfoLoad.IsEmpty())) - break; - - auto dbgModule = mPendingDebugInfoRequests.back(); - mPendingDebugInfoRequests.pop_back(); - if (LoadDebugInfoForModule(dbgModule) == 1) - _ModuleChanged(dbgModule); - }*/ + Array pendingList; + for (auto kv : mPendingDebugInfoLoad) + pendingList.Add(kv.mValue); + + for (auto& entry : pendingList) + { + auto dbgModule = entry.mModule; + entry.mModule->RequestDebugInfo(entry.mAllowRemote); + // We do a "_ModuleChanged" even if the load failed, so we rehup the callstack and stop + // saying "" + _ModuleChanged(entry.mModule); + } + } } if (IsMiniDumpDebugger()) @@ -10829,7 +10824,7 @@ String WinDebugger::GetStackFrameInfo(int stackFrameIdx, intptr* addr, String* o { *outFlags |= FrameFlags_HasPendingDebugInfo; - if (mPendingDebugInfoLoad.Contains(dbgModule)) + if (mPendingDebugInfoLoad.ContainsKey(dbgModule)) { String outName = EncodeDataPtr(pcAddress, true); if ((dbgModule != NULL) && (!dbgModule->mDisplayName.empty())) @@ -11957,12 +11952,15 @@ int WinDebugger::LoadDebugInfoForModule(DbgModule* dbgModule) return 1; } - if (!mPendingDebugInfoLoad.Contains(dbgModule)) + DbgPendingDebugInfoLoad* dbgPendingDebugInfoLoad = NULL; + if (mPendingDebugInfoLoad.TryAdd(dbgModule, NULL, &dbgPendingDebugInfoLoad)) { - mPendingDebugInfoLoad.Add(dbgModule); + dbgPendingDebugInfoLoad->mModule = dbgModule; + dbgPendingDebugInfoLoad->mAllowRemote = true; return 2; } - + dbgPendingDebugInfoLoad->mAllowRemote = true; + return 0; } diff --git a/IDEHelper/WinDebugger.h b/IDEHelper/WinDebugger.h index 4fc8c9b5..766d838c 100644 --- a/IDEHelper/WinDebugger.h +++ b/IDEHelper/WinDebugger.h @@ -357,6 +357,18 @@ struct WdMemoryBreakpointBind } }; +struct DbgPendingDebugInfoLoad +{ + DbgModule* mModule; + bool mAllowRemote; + + DbgPendingDebugInfoLoad() + { + mModule = NULL; + mAllowRemote = false; + } +}; + class WinDebugger : public Debugger { public: @@ -431,7 +443,7 @@ public: DbgPendingExpr* mDebugPendingExpr; WdThreadInfo mDebugEvalThreadInfo; // Copy of thread info when eval started Array mPendingImageLoad; - Array mPendingDebugInfoLoad; + Dictionary mPendingDebugInfoLoad; Array mPendingDebugInfoRequests; HashSet mLiteralSet; diff --git a/bin/Beefy.vsmacros b/bin/Beefy.vsmacros deleted file mode 100644 index 4db23d87ea22a9f8bc75e1c863a08eef066f49e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258048 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 z 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 diff --git a/bin/BeefyDepsMerge.py b/bin/BeefyDepsMerge.py deleted file mode 100644 index ffb2bf8f..00000000 --- a/bin/BeefyDepsMerge.py +++ /dev/null @@ -1,47 +0,0 @@ -# Sublime Text 3 macro to merge CodeConv deps files -# Open deps files and run this macro. A new file will be created that -# includes data from all open deps files. -import sublime, sublime_plugin - -class Beefy_deps_mergeCommand(sublime_plugin.TextCommand): - def run(self, edit): - nv = self.view.window().new_file() - - typeMap = {}; - strOut = "{\n\t\"trimReflection\":true,\n\t\"requiredTypes\":\n\t[\n" - - for view in self.view.window().views(): - fileName = view.file_name() - if ((fileName == None) or (fileName.find(".bfrtproj") == -1)): - continue - - viewRegion = sublime.Region(0, view.size()) - fullText = view.substr(viewRegion) - lines = fullText.splitlines() - - for line in lines: - if not line.startswith("\t\t\""): - continue - - dataStr = line.split('\"')[1] - parts = dataStr.split(':') - - typeName = parts[0] - memberData = parts[1].split(';') - - if not typeName in typeMap: - typeMap[typeName] = [] - - for memberName in memberData: - if (not memberName in typeMap[typeName]): - typeMap[typeName].append(memberName) - - for typeName in sorted(typeMap): - lineOut = "\t\t\"" + typeName + ":" - lineOut += ";".join(sorted(typeMap[typeName])) - lineOut += "\",\n" - strOut += lineOut - - strOut += "\t]\n}\n" - - nv.replace(edit, sublime.Region(nv.size(), nv.size()), strOut) diff --git a/bin/BeefyLLDB.py b/bin/BeefyLLDB.py deleted file mode 100644 index f246e66b..00000000 --- a/bin/BeefyLLDB.py +++ /dev/null @@ -1,67 +0,0 @@ -""" File: BeefyLLDB.py """ -import lldb -import shlex - -class BFArraySyntheticChildrenProvider: - def __init__(self, valobj, internal_dict): - #print "Var: " + valobj.GetName() - self.startIdx = 1 - self.obj = valobj - self.update() - def update(self): - self.length = self.obj.GetChildMemberWithName("mLength") - self.firstElement = self.obj.GetChildMemberWithName("mFirstElement") - self.dataType = self.firstElement.GetType() - def num_children(self): - return min(1024, self.length.GetValueAsSigned()) + self.startIdx; - def get_child_index(self,name): - if (name == "mLength"): - return 0; - try: - return int(name.lstrip('[').rstrip(']')) + self.startIdx - except: - return -1 - def get_child_at_index(self,index): - if index < 0: - return None; - if index >= self.num_children(): - return None; - - if (index == 0): - return self.length; - - offset = (index - self.startIdx) * self.dataType.GetByteSize() - return self.firstElement.AddressOf().CreateChildAtOffset('['+str(index - self.startIdx)+']', offset, self.dataType) - - def has_children(self): - return True - -def StringSummaryProvider(valobj, dict): - e = lldb.SBError() - s = u'"' - - if valobj.GetValue() != 0: - strObj = valobj.GetChildMemberWithName("start_char") - len = valobj.GetChildMemberWithName("length").GetValueAsSigned() - - i = 0 - newchar = -1 - ptrType = strObj.GetType().GetPointerType() - - for i in range(0, min(8192, len)): - data_val = strObj.CreateChildAtOffset('['+str(i)+']', i*2, strObj.GetType()) - newchar = data_val.GetValueAsUnsigned() - i = i + 1 - - if newchar != 0: - s = s + unichr(newchar) - s = s + u'"' - return s.encode('utf-8') - -def __lldb_init_module(debugger,dict): - print "InitModule" - debugger.HandleCommand('type summary add --expand -x "BFArray1<" -summary-string "len = ${var.mLength}"') - debugger.HandleCommand('type synthetic add -x "BFArray1<" -l BeefyLLDB.BFArraySyntheticChildrenProvider') - debugger.HandleCommand('type summary add "BFType" -summary-string "${var.mDebugTypeData->mName}@${var.mDebugTypeData->mNamespace}"') - debugger.HandleCommand('type summary add "BFTypeRoot" -summary-string "${var.mDebugTypeData->mName}@${var.mDebugTypeData->mNamespace}"') - debugger.HandleCommand('type summary add "System::String" -F BeefyLLDB.StringSummaryProvider') diff --git a/bin/machine.config b/bin/machine.config deleted file mode 100644 index b98a4d3e..00000000 --- a/bin/machine.config +++ /dev/null @@ -1,310 +0,0 @@ - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- - - -
- -
-
-
-
- - - - -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bin/symstore.exe b/bin/symstore.exe deleted file mode 100644 index de45bd32bc22959013478d052d599caa096ae5b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104080 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

>L`Ouhg|Mp-t`$r3j?UTJDeNX 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