没关系为什么人们想要这样做,我只是想知道是否可以做到。
这是我的代码不起作用:
if (!Debugger.IsAttached)
{
try
{
Debugger.Launch();
while (!Debugger.IsAttached)
{
Thread.Sleep(1000);
}
}
catch (System.Security.SecurityException e)
{
Console.WriteLine("exception " + e.Message);
}
}
基本上我很想知道如何使用Debugger.Launch()
方法。
答案 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()
的效用值得怀疑。您可以更轻松地使用断点,并且使用断点不会意外地将其留在成品中。