c#强制调试模式编程

本文关键字:模式 编程 调试 | 更新日期: 2023-09-27 18:08:49

别管为什么要这样做,我只是想知道这是否可以做到。

这是我不能工作的代码:

if (!Debugger.IsAttached)
{
    try
    {
        Debugger.Launch();
        while (!Debugger.IsAttached)
        {
            Thread.Sleep(1000);
        }
    }
    catch (System.Security.SecurityException e)
    {
        Console.WriteLine("exception " + e.Message);
    }
}

基本上我很想知道如何使用Debugger.Launch()方法

c#强制调试模式编程

调试器。启动将启动调试器,如果已经附加了调试器,则不执行任何操作。我相信这不是断点。debug . break()实际上会中断。

调用Debugger.Launch()可能会根据机器的不同做不同的事情,例如是否安装了Visual Studio等。

请参阅相关技术文章:如何:自动启动调试器

它将启动并向进程附加一个调试器。当然,不要在生产中使用它。我认为这是可能的用途

当错误发生时,可以在本地机器中自动运行调试。

我认为你误解了Debugger.Launch()的作用。它的功能类似于硬编码的断点。

当你的程序到达Debugger.Launch()时,即时调试窗口将显示(假设你在机器上安装了Visual Studio)。这时,你的程序就停止了——它不再继续运行了。

如果您选择一个VS实例,它将启动,并将在Debugger.Launch()所在行停止,就好像您在那里遇到了一个断点一样。

所以没有必要进行while()循环。只要你想要停止程序来查看一些东西,你就可以调用Debugger.Launch()

但是Debugger.Launch()的效用是值得怀疑的。您可以更容易地使用断点,并且有了断点,就不会有意外地将它留在成品中的危险。