我通过将'-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意味着调试器已经附加,但上面的问题仍未解决.