//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public CLangDebuggeeThread GetThread (uint threadId) { LoggingUtils.PrintFunction (); DebuggeeThread thread = null; lock (m_debugThreads) { m_debugThreads.TryGetValue (threadId, out thread); } return (CLangDebuggeeThread) thread; }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public DebuggeeStackFrame(DebugEngine engine, DebuggeeThread thread, string frameName) { m_debugEngine = engine; m_thread = thread; m_codeContext = null; m_documentContext = null; m_property = new DebuggeeProperty(engine, this, frameName, string.Empty); m_stackRegisters = new ConcurrentDictionary <string, DebuggeeProperty> (); m_stackArguments = new ConcurrentDictionary <string, DebuggeeProperty> (); m_stackLocals = new ConcurrentDictionary <string, DebuggeeProperty> (); m_customExpressions = new ConcurrentDictionary <string, DebuggeeProperty> (); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public bool RemoveThread (uint threadId, uint exitCode) { LoggingUtils.PrintFunction (); DebuggeeThread thread = null; lock (m_debugThreads) { if (m_debugThreads.TryGetValue (threadId, out thread)) { m_debugThreads.Remove (threadId); } } if (thread != null) { m_debugger.Engine.Broadcast (new DebugEngineEvent.ThreadDestroy (exitCode), DebugProgram, thread); } return (thread != null); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public CLangDebuggeeThread AddThread (uint threadId) { LoggingUtils.PrintFunction (); DebuggeeThread thread = null; lock (m_debugThreads) { if (!m_debugThreads.TryGetValue (threadId, out thread)) { thread = new CLangDebuggeeThread (m_debugger, this, threadId); m_debugThreads.Add (threadId, thread); } } if (thread != null) { m_debugger.Engine.Broadcast (new DebugEngineEvent.ThreadCreate (), DebugProgram, thread); } return (CLangDebuggeeThread) thread; }