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

时间:2010-11-19 10:37:42

标签: c# debugging

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

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

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

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

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

  • 为什么没有任何内容打印到控制台 如果我拒绝附加调试器?
  • Debugger.Launch()是否致电 System.Exit未能附加?

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

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

确定是否正在执行finally{}阻止?

控制台是否可以如此快速地关闭 - 它看起来像是什么? -