private static void DumpAllJavaThreads() { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); java.util.Map traces = java.lang.Thread.getAllStackTraces(); Console.WriteLine("Full thread dump IKVM.NET {0} ({1} bit):", JVM.SafeGetAssemblyVersion(Assembly.GetExecutingAssembly()), IntPtr.Size * 8); java.util.Iterator entries = traces.entrySet().iterator(); while (entries.hasNext()) { java.util.Map.Entry entry = (java.util.Map.Entry)entries.next(); java.lang.Thread thread = (java.lang.Thread)entry.getKey(); Console.WriteLine("\n\"{0}\"{1} prio={2} tid=0x{3:X8}", thread.getName(), thread.isDaemon() ? " daemon" : "", thread.getPriority(), thread.getId()); Console.WriteLine(" java.lang.Thread.State: " + thread.getState()); java.lang.StackTraceElement[] trace = (java.lang.StackTraceElement[])entry.getValue(); for (int i = 0; i < trace.Length; i++) { Console.WriteLine("\tat {0}", trace[i]); } } Console.WriteLine(); }