Debugger.Launch()导致静默崩溃

时间:2018-07-13 10:46:04

标签: c# .net debugging

我们的应用程序创建临时appdomain,从字节数组创建内存中的程序集,在程序集中创建该类型的实例,然后在该实例上调用方法。此方法包含Debugger.Launch()调用,以强制用户附加调试器。

Debugger window image

如果在此窗口中选择“否”,则调用应用程序将立即强制关闭,而不会生成任何异常。

有什么方法可以调试和/或阻止正在调用的应用程序关闭?

编辑:

此处提供示例代码

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");
        }
    }
}

0 个答案:

没有答案