我通过将'-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
意味着调试器已经附加,但上述问题仍未解决。
答案 0 :(得分:2)
答案 1 :(得分:0)
您确定是否正在执行finally{}
阻止?
控制台是否可以如此快速地关闭 - 它看起来像是什么? -