【发布时间】: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。