public void CheckFailList(OptimizerContext context, MethodDefinition method) { CheckFailList(context, method.DeclaringType, method.FullName); var entry = context.GetMethodEntries(method)?.FirstOrDefault(m => m.Action == MethodAction.Warn || m.Action == MethodAction.Fail); if (entry == null) { return; } var message = $"Found fail-listed method `{method.FullName}`"; context.LogMessage(MessageImportance.High, Environment.NewLine); context.LogMessage(MessageImportance.High, message + ":"); DumpFailEntry(context, entry); var stack = context.DumpTracerStack(); OptimizerReport.FailList.Add(new FailListEntry(method, entry, stack)); context.LogMessage(MessageImportance.High, Environment.NewLine); if (entry.Action == MethodAction.Fail) { throw new OptimizerException(message + "."); } }
public bool EnableDebugging(OptimizerContext context, MethodDefinition method) { if (DontDebugThis(method.DeclaringType)) { return(false); } if (EnableDebugging(context, method.DeclaringType)) { return(true); } if (AutoDebugMain) { if (method.Name == "Main") { return(true); } if (method.FullName.Contains("Martin")) { return(true); } } return(context.GetMethodEntries(method)?.Any(m => m.Action == MethodAction.Debug) ?? false); }