我们的应用程序创建临时appdomain,从字节数组创建内存中的程序集,在程序集中创建该类型的实例,然后在该实例上调用方法。此方法包含Debugger.Launch()调用,以强制用户附加调试器。
如果在此窗口中选择“否”,则调用应用程序将立即强制关闭,而不会生成任何异常。
有什么方法可以调试和/或阻止正在调用的应用程序关闭?
编辑:
此处提供示例代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace DebuggerCrash
{
public class Program
{
public static void Main(string[] args)
{
var method = typeof(SampleClass).GetMethod(nameof(SampleClass.Launch), BindingFlags.Static | BindingFlags.Public);
try
{
method.Invoke(null, null);
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadLine();
}
}
internal static class SampleClass
{
public static void Launch()
{
if (Debugger.IsAttached)
{
Debugger.Break();
}
else
{
Debugger.Launch();
}
Console.WriteLine("After launch");
}
}
}