c#以编程方式强制调试模式

时间:2011-09-18 05:27:01

标签: c# debugging

没关系为什么人们想要这样做,我只是想知道是否可以做到。

这是我的代码不起作用:

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

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

3 个答案:

答案 0 :(得分:16)

Debugger.Launch将启动一个调试器,或者什么都不做已经附加的调试器。我相信这不是一个断点。 Debugger.Break()实际上会破坏。

调用Debugger.Launch()可能会根据计算机执行不同的操作,例如,如果安装了Visual Studio,等等。

另请参阅相关技术文章:How to: Launch the Debugger Automatically

答案 1 :(得分:3)

它将启动并将调试器附加到该进程。 当然不要在生产中使用它。我认为有可能使用 当发生错误并且您想要自动运行调试时,可以在本地计算机中。

答案 2 :(得分:3)

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

当你的程序点击Debugger.Launch()时,会显示Just-In-Time-Debugging窗口(假设你在机器上安装了Visual Studio。此时,程序停止运行 - 它不会继续运行

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

所以没有理由使用while()循环。只要您想停止程序查看某些内容,就可以调用Debugger.Launch()

Debugger.Launch()的效用值得怀疑。您可以更轻松地使用断点,并且使用断点不会意外地将其留在成品中。