C#中调试和错误的处理

正常模式下的调试

1,在vs中使用Console.Write(或者WriteLine)方法向控制台输出变量的值,通过这种形式来观察变量的值是否符合预期。

2,在Unity中可以使用Debug.Log(“”) Debug.LogError(“”) Debug.LogWarn(“”),想Unity的Console窗口输出信息,方便进行调试错误。


中断模式下的调试

通过断点的设置,暂停程序的执行。
断点是什么?即源代码自动进入终端模式的一个标记。
如何插入断点?

  1. 右键代码,选择breakpoint,insert breakpoint。
  2. 光标移动到代码行,菜单栏中选择Debug,Toggle Breakpoint。
  3. 光标移动到代码行,按下F9设置断点,再按下取消断点。
  4. 在需要添加断点的行首位置,单击设置断点,再次单击取消断点。

断点处选择的行是不执行的。断点信息在断点窗口中可以查看、定位、删除断点。

如何在中断模式下查看变量的值?
鼠标直接移动到变量名上就可以查看,或者在断点窗口中可以看到变量的值。
C#中调试和错误的处理
C#中调试和错误的处理
局部变量中显示当前环境下所有局部变量目前(断点运行)的值。
C#中调试和错误的处理
监视可以监视特定变量的值。
C#中调试和错误的处理
假如在定义的函数中设置断点,我们可以在调用堆栈中看到:
C#中调试和错误的处理
调用堆栈显示当前行是由哪个函数调用过来的。
而对于即时窗口,可以手动的输入变量名称来查看目前环境下的变量。
C#中调试和错误的处理
C#中调试和错误的处理
第一个res查询失败,是因为查询第一个时断点设置在了Fun中,该环境下没有res变量。

同时,在局部变量或者即时窗口,都可以直接对当前的值进行修改、重新赋值。


逐语句逐过程

  1. 逐语句
    一条一条语句的去执行,在遇到函数等其他语句时,会调到函数中,接着逐语句的去运行,当函数运行完毕再跳回来,就是程序一卡一卡的去执行。

  2. 逐过程
    也是一条一条的去执行,但是是流水式的去执行,把函数当一条语句去执行,不会有跳转这种行为。相当于从断点一直刷到最后,没有什么逻辑在其中。