C# - 如何在无法附加调试器后继续 - System.Diagnostics.Debugger.Launch()

Cit*_*iew 5 c# debugging

我通过将'-d'作为命令行参数传递给我的控制台应用程序来附加调试器.这会导致调用以下代码;

bool attachedDebugger = false;
try
{
   attachedDebugger = System.Diagnostics.Debugger.Launch();
}
catch (Exception) { }
finally
{
   Console.WriteLine(attachedDebugger ? "Debugger Attached" : "Failed to attach debugger");
}
Run Code Online (Sandbox Code Playgroud)

弹出Visual Studio 2010 JIT窗口后,我有时会改变主意,不想调试,所以我忽略了对话框.如果我没有附加一个,那么应用程序会立即退出而不会将任何内容写入控制台.

我知道这是一个边缘用例,如果我不想调试,我应该从命令行中删除'-d'.我的问题的原因是我希望了解发生了什么.

我认为finally块总是被调用,而且如果我们无法附加调试器,我希望我的应用程序继续.

  • 如果拒绝附加调试器,为什么没有任何内容打印到控制台?
  • 是否Debugger.Launch()调用 System.Exit失败附?

编辑谢谢@ Moo-Juice我现在知道返回值false意味着调试器已经附加,但上面的问题仍未解决.