Nis*_*sim 28 .net c# debugging system.diagnostics
有什么区别
Debugger.Launch();
Debugger.Break();
Run Code Online (Sandbox Code Playgroud)
?
Mar*_*ell 20
阅读文档,Launch
如果附加了调试器,它听起来没有任何作用 - 它实际上并没有破坏(虽然我没有验证这一点).
Break
要求启动调试器(如果没有附加),并确实执行了中断.
实际上,你不可能有一个以上的Launch
点......如果那样的话.
我不确定是否有人真正尝试过 .NET Framework 和 .NET 5 之间有什么区别或者是否不同,但这是我测试时的行为:
单击“确定”后,VS 将继续运行Debugger.Launch()
(尽管其他回答者说不会):
但是,如果调试器已经连接,则不会中断。Debugger.Launch()
如果我将我的项目打包为 dotnet 工具,一切都是一样的,只是它不知道在哪里中断:
TL;DR:在 .NET 5 中:
附加调试器:
.Launch()
不会做任何事.Break()
会打破没有附加调试器:
.Launch()
会要求附加一个调试器,如果你这样做,它将在以下位置中断.Launch()
.Break()
不会做任何事(无一例外)示例.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
程序.cs:
using System;
using System.Diagnostics;
Console.WriteLine("Before break");
Debugger.Break();
Console.WriteLine("After break");
Console.WriteLine("Before Launch");
Debugger.Launch();
Console.WriteLine("After Launch");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11951 次 |
最近记录: |