【问题标题】:C# - How to continue after failing to attach debugger - System.Diagnostics.Debugger.Launch()C# - 附加调试器失败后如何继续 - System.Diagnostics.Debugger.Launch()
【发布时间】:2010-11-19 23:57:34
【问题描述】:

我通过将“-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 块是 always 调用的,此外,如果我们无法附加调试器,我希望我的应用程序继续运行。

  • 为什么没有打印到控制台 如果我拒绝附加调试器?
  • Debugger.Launch() 是否呼叫 System.Exit 附加失败?

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

【问题讨论】:

  • 如果调试器已附加,则返回的布尔值为false

标签: c# debugging


【解决方案1】:

【讨论】:

    【解决方案2】:

    确定finally{} 块没有被执行吗?

    控制台可以这么快就关闭吗?看起来像即时?

    【讨论】:

    • 使用 ctrl+F5 运行应该可以防止这种情况发生
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2020-04-08
    • 2011-02-09
    相关资源
    最近更新 更多