internal void InitializeThreads(Inferior inferior, bool resume_threads) { if (thread_db != null) { return; } thread_db = ThreadDB.Create(this, inferior); if (thread_db == null) { if (!IsManaged) { return; } Report.Error("Failed to initialize thread_db on {0}", start.CommandLine); throw new TargetException(TargetError.CannotStartTarget, "Failed to initialize thread_db on {0}", start.CommandLine); } int[] threads = inferior.GetThreads(); foreach (int thread in threads) { if (thread_hash.Contains(thread)) { continue; } ThreadCreated(inferior, thread, Inferior.HasThreadEvents, resume_threads); } thread_db.GetThreadInfo(inferior, delegate(int lwp, long tid) { SingleSteppingEngine engine = (SingleSteppingEngine)thread_hash [lwp]; if (engine == null) { Report.Error("Unknown thread {0} in {1}", lwp, start.CommandLine); return; } engine.SetTID(tid); }); }