VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > C#教程 >
  • C# 8.0和.NET Core 3.0高级编程 分享笔记五:第二部分在开发过程中进行调试

4.2在开发过程中进行调试

4.2.1创建带有故意错误的代码

​ 下面首先创建一个带有故意错误的控制台应用程序以探索调试功能,然后使用工具进行跟踪和修复。

(1)在Chapter04文件夹创建一个名为Debugging的文件夹和一个控制台应用程序项目,将这个项目添加到工作区。

(2)导航到View|Command Palette,输入并选择OmniSharp:Select Project然后选择Debugging项目。

(3)在Debugging文件夹中打开并修改Program.cs,因为使用的是NET6所以添加一个新的cs文件名为Utilities.cs,定义一个带有故意错误的函数,并在Program.cs中调用这个函数,如下所示:

这里切换了NET6。所以代码和书上的从这里开始就不一样了。但是整体思维是一样的。

需要补NET6知识的,打开这个网站。顶级语句 - C# 教程 | Microsoft Docs

Program.cs

using MyNamespace;
// See https://aka.ms/new-console-template for more information
//Console.WriteLine("Hello, World!");
//https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/tutorials/top-level-statements 文档位置
double a=4.5;
double b=2.5;
double answer=MyNamespace.Utilities.Add(a,b);
Console.WriteLine($"{a}+{b}={answer}");
Console.ReadLine();

Utilities.cs

namespace MyNamespace
{
    public static class Utilities
    {
        public  static double Add(double a,double b)
        {
            return a*b;
        }
    }
}

(4)运行控制台应用程序并查看结果,输出如下所示:

4.5+2.5=11.25

(5)按回车结束控制台应用程序。

但是等等,这里有错误发生!4.5加上2.5应该等于7而不是11.25!下面使用调试工具来查找和消除错误。

4.2.2 设置断点

断点允许你标记想要暂停的代码行,以检查程序状态并查找错误。

(1)单击Program中的double a=4.5;所在行,

(2)导航到Debug|Toggle Breakpoint或按F9功能键。然后,有个红色的圆圈将出现在左侧的空白栏中,表示设置了断点。可以使用F9功能键切换断点,使用鼠标点击左侧页边的空白处,添加和删除断点。

(3)在Visual Studio Code中导航到View|Debug,也可以使用Ctrl键或Ctrl+Shift+D组合键。

(4)在Debug窗格的顶部打开Start Debugging 按钮右侧的下来菜单,选择.NET Core Launch(console) (Debugging)。这里不配图了,如果没有的话,注意看是不是工作区目录的层级关系关系设置错了,根目录是工作区,Debugging是二级目录。。

4.2.3使用调试工具栏进行导航

Visual Studio Code中显示的调试工具栏包含6个按钮,以便于访问调试功能。

  • Step Over/F10、Step Into/F11、Step Out/Shift+F11,这些按钮可以单步或进入方法内部查看执行语句的过程,
  • 重启Ctrl或Ctrl+Shift+F5。这个将停止程序,然后立即重启程序。
  • Shift+F5 这个按钮将立即停止程序。

跳过去了一部分,因为看界面视图就可以了解,如Debug窗格、使用F11和F10单步执行代码。

4.2.6自定义断点

这个比较重要,很多人用不好,或者不知道如何使用,所以这里做一下记录。

(1)如果在调试中,请单击Stop或导航到Debug|Stop Debugging,也可按Shift+F5组合键。

(2)在BREAKPOINTS窗格中单击迷你工具栏的最后一个按钮Remove All Breakpoints,或导航到Debug|Remove All BreakPoints。

(3)单击WriteLine语句。

(4)按F9功能设置断点。

(5)右击断点并先择EditBreakpoint。

(6)输入一个表达式,比如answer<9,注意这个表达式的值必须为True才能激活断点。(这里不知道为什么跟,我自己测试发现结果为11.5 小于9是进不去断点的,所以这点我吧书上的内容改了。)

(7)开始调试注意没有遭遇断点。

(8)停止调试。

(9)编辑断点,将表达式的值修改为answer>9。(同样的,我吧书上的内容改了)

(10)开始调试,这次遇到了断点

(11)停止调试

(12)剪辑断点并选择Hit Count,然后输入数字3,意味着在激活之前需要遭遇三次才行。

(13)将鼠标悬停在断点的红色圈圈上查看摘要。

使用SharpPad转储变量

针对有经验的.NET开发人员来说,他们最喜欢的工具之一是LINQPad。对于复杂的嵌套对象,可以方便、快速的将它们的值输出到工具窗口中。

(1)在Visual Studio Code中导航到View|Extensions。

(2)搜索SharpPad并单击Install。

(3)在Chapter04文件夹创建一个名为Dumping的文件夹和一个控制台应用程序,并将这个项目添加到工作区。

(4)在终端窗口中输入如下命令,将SharpPad包添加到Dumping项目中。

dotnet add package SharpPad

(5)打开Dumping.csproj,留意包引用,如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="SharpPad" Version="1.0.4" />
  </ItemGroup>

</Project>

(6)修改Program.cs导入SharpPad和System.Threading.Tasks名称空间,定义complexObject变量并将其转储到SharpPad窗口中,代码如下:

using SharpPad;
using System;
using System.Threading.Tasks;
using static System.Console;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
var complexObject=new 
{
    FirstName="Petr",
    BirtDate=new DateTime(year:1972,month:12,day:25),Friends=new[]{"Amir","Geoff","Sal"}
};
WriteLine($"Dumping{nameof(complexObject)} to SharpPad.");
await complexObject.Dump();

运行结果如下:

PS D:\LearningRecords\doc\C#\NetCoreWorkspace\Code\Chapter04\Dumping> dotnet run
Hello, World!
DumpingcomplexObject to SharpPad.

具体使用方法在后面介绍异步任务的时候讲等待对异步方法Dump的调用。

剩下就是使用Trace做开发和运行时日志的记录,因为前段时间项目中已经封装好了,所以作为WPF技巧更新出来,这里就不写了。

 
出  处:https://www.cnblogs.com/duwenlong/p/15491745.html
 
 


相关教程