public void WriteCategory(ThreadVM vm) { switch (vm.Type) { case ThreadType.Unknown: output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.ThreadType_Unknown); break; case ThreadType.Main: output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.ThreadType_Main); break; case ThreadType.ThreadPool: output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.ThreadType_ThreadPool); break; case ThreadType.Worker: output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.ThreadType_Worker); break; case ThreadType.BGCOrFinalizer: output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.ThreadType_BackgroundGC_or_Finalizer); output.Write(BoxedTextColor.Error, "???"); break; case ThreadType.Terminated: output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.ThreadType_Terminated); break; default: Debug.Fail(string.Format("Unknown thread type: {0}", vm.Type)); goto case ThreadType.Unknown; } }
public void WriteCategory(ThreadVM vm) { switch (vm.Type) { case ThreadType.Unknown: output.Write("Unknown Thread", TextTokenType.Text); break; case ThreadType.Main: output.Write("Main Thread", TextTokenType.Text); break; case ThreadType.ThreadPool: output.Write("Thread Pool", TextTokenType.Text); break; case ThreadType.Worker: output.Write("Worker Thread", TextTokenType.Text); break; case ThreadType.BGCOrFinalizer: output.Write("BGC / Finalizer", TextTokenType.Text); output.Write("???", TextTokenType.Error); break; case ThreadType.Terminated: output.Write("Terminated Thread", TextTokenType.Text); break; default: Debug.Fail(string.Format("Unknown thread type: {0}", vm.Type)); goto case ThreadType.Unknown; } }
public void WriteCategory(ThreadVM vm) { switch (vm.Type) { case ThreadType.Unknown: output.Write(dnSpy_Debugger_Resources.ThreadType_Unknown, TextTokenKind.Text); break; case ThreadType.Main: output.Write(dnSpy_Debugger_Resources.ThreadType_Main, TextTokenKind.Text); break; case ThreadType.ThreadPool: output.Write(dnSpy_Debugger_Resources.ThreadType_ThreadPool, TextTokenKind.Text); break; case ThreadType.Worker: output.Write(dnSpy_Debugger_Resources.ThreadType_Worker, TextTokenKind.Text); break; case ThreadType.BGCOrFinalizer: output.Write(dnSpy_Debugger_Resources.ThreadType_BackgroundGC_or_Finalizer, TextTokenKind.Text); output.Write("???", TextTokenKind.Error); break; case ThreadType.Terminated: output.Write(dnSpy_Debugger_Resources.ThreadType_Terminated, TextTokenKind.Text); break; default: Debug.Fail(string.Format("Unknown thread type: {0}", vm.Type)); goto case ThreadType.Unknown; } }
public void WriteCategory(ThreadVM vm) { switch (vm.Type) { case ThreadType.Unknown: output.Write("Unknown Thread", TextTokenType.Text); break; case ThreadType.Main: output.Write("Main Thread", TextTokenType.Text); break; case ThreadType.ThreadPool: output.Write("Thread Pool", TextTokenType.Text); break; case ThreadType.Worker: output.Write("Worker Thread", TextTokenType.Text); break; case ThreadType.BGCOrFinalizer: output.Write("BGC / Finalizer", TextTokenType.Text); output.Write("???", TextTokenType.Error); break; case ThreadType.Terminated: output.Write("Terminated Thread", TextTokenType.Text); break; default: Debug.Fail(string.Format("Unknown thread type: {0}", vm.Type)); goto case ThreadType.Unknown; } }
public void WriteAffinityMask(ThreadVM vm) { ulong affMask = (ulong)vm.AffinityMask.ToInt64(); bool started = false; var sb = new StringBuilder(); for (ulong bitMask = 1UL << 63; bitMask != 0; bitMask >>= 1) { if (!started && bitMask == 0x8000) { started = true; } if ((affMask & bitMask) != 0) { started = true; sb.Append('1'); } else { if (started) { sb.Append('0'); } } } output.Write(BoxedTextColor.Number, sb.ToString()); }
public void WriteUserState(ThreadVM vm) { var state = vm.UserState; bool needComma = false; foreach (var t in UserStates) { if ((state & t.Item1) != 0) { state &= ~t.Item1; if (needComma) { output.WriteCommaSpace(); } needComma = true; output.Write(BoxedTextColor.EnumField, t.Item2); } } if (state != 0) { if (needComma) { output.WriteCommaSpace(); } output.Write(BoxedTextColor.Number, string.Format("0x{0:X}", (int)state)); } }
public void WriteManagedId(ThreadVM vm) { var id = vm.ManagedId; if (id != null) WriteInt32(id.Value); else { output.Write("???", TextTokenType.Error); WriteInt32(vm.Thread.IncrementedId + 1); } }
internal static void GoTo(ThreadVM vm, bool newTab) { if (vm == null) { return; } StackFrameManager.Instance.SelectedThread = vm.Thread; FrameUtils.GoTo(vm.Thread.AllFrames.FirstOrDefault(f => f.IsILFrame), newTab); }
public void WriteManagedId(ThreadVM vm) { var id = vm.ManagedId; if (id != null) WriteInt32(id.Value); else { output.Write("???", TextTokenKind.Error); WriteInt32(vm.Thread.UniqueIdProcess + 1); } }
public void WriteManagedId(ThreadVM vm) { var id = vm.ManagedId; if (id != null) WriteInt32(id.Value); else { output.Write(BoxedTextColor.Error, "???"); WriteInt32(vm.Thread.UniqueIdProcess + 1); } }
public void WriteManagedId(ThreadVM vm) { var id = vm.ManagedId; if (id != null) { WriteInt32(id.Value); } else { output.Write("???", TextTokenKind.Error); WriteInt32(vm.Thread.UniqueIdProcess + 1); } }
public void WriteManagedId(ThreadVM vm) { var id = vm.ManagedId; if (id != null) { WriteInt32(id.Value); } else { output.Write("???", TextTokenType.Error); WriteInt32(vm.Thread.IncrementedId + 1); } }
public void WriteManagedId(ThreadVM vm) { var id = vm.ManagedId; if (id != null) { WriteInt32(id.Value); } else { output.Write(BoxedTextColor.Error, "???"); WriteInt32(vm.Thread.UniqueIdProcess + 1); } }
public void WriteName(ThreadVM vm) { var name = vm.Name; if (vm.UnknownName) { output.Write("???", TextTokenKind.Error); } else if (name == null) { output.Write(dnSpy_Debugger_Resources.Thread_NoName, TextTokenKind.Text); } else { output.Write(DebugOutputUtils.FilterName(name, MAX_THREAD_NAME), TextTokenKind.String); } }
public void WritePriority(ThreadVM vm) { switch (vm.Priority) { case ThreadPriority.Lowest: output.Write(dnSpy_Debugger_Resources.Thread_Priority_Lowest, TextTokenKind.EnumField); break; case ThreadPriority.BelowNormal: output.Write(dnSpy_Debugger_Resources.Thread_Priority_BelowNormal, TextTokenKind.EnumField); break; case ThreadPriority.Normal: output.Write(dnSpy_Debugger_Resources.Thread_Priority_Normal, TextTokenKind.EnumField); break; case ThreadPriority.AboveNormal: output.Write(dnSpy_Debugger_Resources.Thread_Priority_AboveNormal, TextTokenKind.EnumField); break; case ThreadPriority.Highest: output.Write(dnSpy_Debugger_Resources.Thread_Priority_Highest, TextTokenKind.EnumField); break; default: output.Write(string.Format("???({0})", (int)vm.Priority), TextTokenKind.Error); break; } }
public void WriteName(ThreadVM vm) { var name = vm.Name; if (vm.UnknownName) { output.Write("???", TextTokenType.Error); } else if (name == null) { output.Write("<No Name>", TextTokenType.Text); } else { output.Write(DebugOutputUtils.FilterName(name, MAX_THREAD_NAME), TextTokenType.String); } }
public void WritePriority(ThreadVM vm) { switch (vm.Priority) { case ThreadPriority.Lowest: output.Write("Lowest", TextTokenType.EnumField); break; case ThreadPriority.BelowNormal: output.Write("Below Normal", TextTokenType.EnumField); break; case ThreadPriority.Normal: output.Write("Normal", TextTokenType.EnumField); break; case ThreadPriority.AboveNormal: output.Write("Above Normal", TextTokenType.EnumField); break; case ThreadPriority.Highest: output.Write("Highest", TextTokenType.EnumField); break; default: output.Write(string.Format("???({0})", (int)vm.Priority), TextTokenType.Error); break; } }
public void WritePriority(ThreadVM vm) { switch (vm.Priority) { case ThreadPriority.Lowest: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_Lowest); break; case ThreadPriority.BelowNormal: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_BelowNormal); break; case ThreadPriority.Normal: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_Normal); break; case ThreadPriority.AboveNormal: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_AboveNormal); break; case ThreadPriority.Highest: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_Highest); break; default: output.Write(BoxedTextColor.Error, string.Format("???({0})", (int)vm.Priority)); break; } }
public void WriteName(ThreadVM vm) { var name = vm.Name; if (vm.UnknownName) { output.Write(BoxedTextColor.Error, "???"); } else if (name == null) { output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.Thread_NoName); } else { output.Write(BoxedTextColor.String, DebugOutputUtils.FilterName(name, MAX_THREAD_NAME)); } }
public void WriteLocation(ThreadVM vm) { var frame = vm.Thread.CorThread.AllFrames.FirstOrDefault(); if (frame == null) { output.Write("<not available>", TextTokenType.Text); } else { var flags = TypePrinterFlags.Default | TypePrinterFlags.ShowIP; if (!useHex) { flags |= TypePrinterFlags.UseDecimal; } frame.Write(new OutputConverter(output), flags); } }
public void WriteLocation(ThreadVM vm) { var frame = vm.Thread.CorThread.AllFrames.FirstOrDefault(); if (frame == null) { output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.Thread_LocationNotAvailable); } else { var flags = TypePrinterFlags.Default | TypePrinterFlags.ShowIP; if (!useHex) { flags |= TypePrinterFlags.UseDecimal; } frame.Write(new OutputConverter(output), flags); } }
void InitializeThreads() { if (!IsEnabled || theDebugger.ProcessState != DebuggerProcessState.Paused) { Collection.Clear(); return; } var debugger = theDebugger.Debugger; var threadsInColl = new HashSet <DnThread>(Collection.Select(a => a.Thread)); var allThreads = new HashSet <DnThread>(debugger.Processes.SelectMany(p => p.Threads)); foreach (var thread in allThreads) { if (threadsInColl.Contains(thread)) { continue; } var vm = new ThreadVM(thread, threadContext); Collection.Add(vm); } for (int i = Collection.Count - 1; i >= 0; i--) { if (!allThreads.Contains(Collection[i].Thread)) { Collection.RemoveAt(i); } } foreach (var vm in Collection) { vm.IsCurrent = stackFrameService.SelectedThread == vm.Thread; vm.UpdateFields(); } }
public void WriteCurrent(ThreadVM vm) { output.Write(vm.IsCurrent ? ">" : " ", TextTokenKind.Text); }
void InitializeThreads() { if (!IsEnabled || DebugManager.Instance.ProcessState != DebuggerProcessState.Stopped) { Collection.Clear(); return; } var debugger = DebugManager.Instance.Debugger; var threadsInColl = new HashSet<DnThread>(Collection.Select(a => a.Thread)); var allThreads = new HashSet<DnThread>(debugger.Processes.SelectMany(p => p.Threads)); foreach (var thread in allThreads) { if (threadsInColl.Contains(thread)) continue; var vm = new ThreadVM(thread); Collection.Add(vm); } for (int i = Collection.Count - 1; i >= 0; i--) { if (!allThreads.Contains(Collection[i].Thread)) Collection.RemoveAt(i); } foreach (var vm in Collection) { vm.IsCurrent = StackFrameManager.Instance.SelectedThread == vm.Thread; vm.UpdateFields(); } }
public void WriteAppDomain(ThreadVM vm) => output.Write(vm.AppDomain, dbg);
public void WriteCurrent(ThreadVM vm) => output.Write(BoxedTextColor.Text, vm.IsCurrent ? ">" : " ");
public void WriteCurrent(ThreadVM vm) => output.Write(BoxedTextColor.Text, vm.IsCurrent ? ">" : " ");
public void WriteSuspended(ThreadVM vm) => output.WriteYesNo(vm.IsSuspended);
public void WriteProcess(ThreadVM vm) { output.Write(vm.Thread.Process, useHex); }
public void WritePriority(ThreadVM vm) { switch (vm.Priority) { case ThreadPriority.Lowest: output.Write("Lowest", TextTokenType.EnumField); break; case ThreadPriority.BelowNormal: output.Write("Below Normal", TextTokenType.EnumField); break; case ThreadPriority.Normal: output.Write("Normal", TextTokenType.EnumField); break; case ThreadPriority.AboveNormal: output.Write("Above Normal", TextTokenType.EnumField); break; case ThreadPriority.Highest: output.Write("Highest", TextTokenType.EnumField); break; default: output.Write(string.Format("???({0})", (int)vm.Priority), TextTokenType.Error); break; } }
public void WriteAppDomain(ThreadVM vm) { output.Write(vm.AppDomain, dbg); }
public void WriteCurrent(ThreadVM vm) { output.Write(vm.IsCurrent ? ">" : " ", TextTokenKind.Text); }
public void WriteUserState(ThreadVM vm) { var state = vm.UserState; bool needComma = false; foreach (var t in UserStates) { if ((state & t.Item1) != 0) { state &= ~t.Item1; if (needComma) output.WriteCommaSpace(); needComma = true; output.Write(t.Item2, TextTokenKind.EnumField); } } if (state != 0) { if (needComma) output.WriteCommaSpace(); output.Write(string.Format("0x{0:X}", (int)state), TextTokenKind.Number); } }
public void WriteAffinityMask(ThreadVM vm) { ulong affMask = (ulong)vm.AffinityMask.ToInt64(); if (IntPtr.Size == 4) affMask &= uint.MaxValue; bool started = false; var sb = new StringBuilder(); for (ulong bitMask = 1UL << 63; bitMask != 0; bitMask >>= 1) { if (!started && bitMask == 0x8000) started = true; if ((affMask & bitMask) != 0) { started = true; sb.Append('1'); } else { if (started) sb.Append('0'); } } output.Write(BoxedTextColor.Number, sb.ToString()); }
internal static void GoTo(IFileTabManager fileTabManager, IModuleLoader moduleLoader, IStackFrameManager stackFrameManager, ThreadVM vm, bool newTab) { if (vm == null) { return; } stackFrameManager.SelectedThread = vm.Thread; FrameUtils.GoTo(fileTabManager, moduleLoader, vm.Thread.AllFrames.FirstOrDefault(f => f.IsILFrame), newTab); }
public void WriteName(ThreadVM vm) { var name = vm.Name; if (vm.UnknownName) output.Write("???", TextTokenType.Error); else if (name == null) output.Write("<No Name>", TextTokenType.Text); else output.Write(DebugOutputUtils.FilterName(name, MAX_THREAD_NAME), TextTokenType.String); }
public void WriteSuspended(ThreadVM vm) { output.WriteYesNo(vm.IsSuspended); }
public void WriteCurrent(ThreadVM vm) { output.Write(vm.IsCurrent ? '>' : ' ', TextTokenType.Text); }
public void WriteAffinityMask(ThreadVM vm) { ulong affMask = (ulong)vm.AffinityMask.ToInt64(); bool started = false; var sb = new StringBuilder(); for (ulong bitMask = 1UL << 63; bitMask != 0; bitMask >>= 1) { if (!started && bitMask == 0x8000) started = true; if ((affMask & bitMask) != 0) { started = true; sb.Append('1'); } else { if (started) sb.Append('0'); } } output.Write(sb.ToString(), TextTokenKind.Number); }
public void WriteLocation(ThreadVM vm) { var frame = vm.Thread.CorThread.AllFrames.FirstOrDefault(); if (frame == null) output.Write("<not available>", TextTokenType.Text); else { var flags = TypePrinterFlags.Default | TypePrinterFlags.ShowIP; if (!useHex) flags |= TypePrinterFlags.UseDecimal; frame.Write(new OutputConverter(output), flags); } }
public void WriteAppDomain(ThreadVM vm) { output.Write(vm.AppDomain); }
public void WriteId(ThreadVM vm) => WriteInt32(vm.Id);
public void WriteCurrent(ThreadVM vm) { output.Write(vm.IsCurrent ? '>' : ' ', TextTokenType.Text); }
public void WriteProcess(ThreadVM vm) => output.Write(vm.Thread.Process, useHex);
public void WritePriority(ThreadVM vm) { switch (vm.Priority) { case ThreadPriority.Lowest: output.Write(dnSpy_Debugger_Resources.Thread_Priority_Lowest, TextTokenKind.EnumField); break; case ThreadPriority.BelowNormal: output.Write(dnSpy_Debugger_Resources.Thread_Priority_BelowNormal, TextTokenKind.EnumField); break; case ThreadPriority.Normal: output.Write(dnSpy_Debugger_Resources.Thread_Priority_Normal, TextTokenKind.EnumField); break; case ThreadPriority.AboveNormal: output.Write(dnSpy_Debugger_Resources.Thread_Priority_AboveNormal, TextTokenKind.EnumField); break; case ThreadPriority.Highest: output.Write(dnSpy_Debugger_Resources.Thread_Priority_Highest, TextTokenKind.EnumField); break; default: output.Write(string.Format("???({0})", (int)vm.Priority), TextTokenKind.Error); break; } }
public void WriteName(ThreadVM vm) { var name = vm.Name; if (vm.UnknownName) output.Write(BoxedTextColor.Error, "???"); else if (name == null) output.Write(BoxedTextColor.Text, dnSpy_Debugger_Resources.Thread_NoName); else output.Write(BoxedTextColor.String, DebugOutputUtils.FilterName(name, MAX_THREAD_NAME)); }
public void WriteLocation(ThreadVM vm) { var frame = vm.Thread.CorThread.AllFrames.FirstOrDefault(); if (frame == null) output.Write(dnSpy_Debugger_Resources.Thread_LocationNotAvailable, TextTokenKind.Text); else { var flags = TypePrinterFlags.Default | TypePrinterFlags.ShowIP; if (!useHex) flags |= TypePrinterFlags.UseDecimal; frame.Write(new OutputConverter(output), flags); } }
internal static void GoTo(IModuleIdProvider moduleIdProvider, IDocumentTabService documentTabService, IModuleLoader moduleLoader, IStackFrameService stackFrameService, ThreadVM vm, bool newTab) { if (vm == null) { return; } stackFrameService.SelectedThread = vm.Thread; FrameUtils.GoTo(moduleIdProvider, documentTabService, moduleLoader, vm.Thread.AllFrames.FirstOrDefault(f => f.IsILFrame), newTab); }
public void WriteId(ThreadVM vm) { WriteInt32(vm.Id); }
public void WriteName(ThreadVM vm) { var name = vm.Name; if (vm.UnknownName) output.Write("???", TextTokenKind.Error); else if (name == null) output.Write(dnSpy_Debugger_Resources.Thread_NoName, TextTokenKind.Text); else output.Write(DebugOutputUtils.FilterName(name, MAX_THREAD_NAME), TextTokenKind.String); }
public void WritePriority(ThreadVM vm) { switch (vm.Priority) { case ThreadPriority.Lowest: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_Lowest); break; case ThreadPriority.BelowNormal: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_BelowNormal); break; case ThreadPriority.Normal: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_Normal); break; case ThreadPriority.AboveNormal: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_AboveNormal); break; case ThreadPriority.Highest: output.Write(BoxedTextColor.EnumField, dnSpy_Debugger_Resources.Thread_Priority_Highest); break; default: output.Write(BoxedTextColor.Error, string.Format("???({0})", (int)vm.Priority)); break; } }