C#调试和错误处理(1)

来源:互联网 发布:小孩曾卓君的淘宝店 编辑:程序博客网 时间:2024/05/17 01:03
  • IDE中的调试方法 ;Ps.集成开发环境(IDE,Integrated Development Environment )
  • C#中的错误处理技术。

  1. 非中断模式下,VS中的调试

(1)将调试信息输出到output窗口,相当与使用Eclipse时,把java代码的输出打印到控制台。
     Debug.WriteLine(); // 仅用于Dubug模式
     Trace.WriteLine(); // 还可用于Release程序
     注意,以上两个方法被包含在System.Diagnostics命名空间内,其唯一的字符串参数用于输出消息。

     提示,可以使用string.Format()函数把变量值嵌套在字符串中,其方式与WriteLine()相同,这比使用+号连接符更高效。
     如:Debug.WriteLine(string.Format($"hello, i am {name}, at floor {i} ")); // 其中name和i是变量。

(2)跟踪点 tracepoint
     跟踪点是VS的一个功能,而不是C#的功能。他实际上是一种输出调试信息且不修改代码(不书写Debug,WriteLine()方法)的功能。
     
     如何为一行代码添加跟踪点:
  •      光标放在代码行上(跟踪点会在此行代码执行之前被处理)
  • 右击代码选择“断点”->“插入跟踪点”,之后VS2015会自动弹出一个插入在代码中的窗口,以进行跟踪点设置。
  • 选中“操作”,在message文本框中输入跟踪点要输出的信息。此信息将会被输出到output窗口。
  • 点击OK,跟踪点完成,显示为一个红色的菱形。

     如何快速查看程序中的所有断点和跟踪点:
     调试->窗口->断点,下拉“列”,选中“发生条件”,可以查看各个跟踪点的输出 。

     此外,在调试模式下右击跟踪点,可以删除或者临时禁用该跟踪点。禁用的跟踪点显示为菱形框,而不是实心的菱形。


  1. 中断模式下的调试

     中断模式:
     程序启动后,有三个按钮可以选择:     
     分别为,暂停、结束、重启,其中暂停可以直接进入中断模式,但是并不好,因为你不知道程序跑到哪里被暂停了。Σ( ° △ °|||)︴
     
     断点:断点是源代码中直接进入中断模式的标记。有四种模式:
  • 遇到断点,立刻进入中断模式
  • 遇到断点,如果布尔表达式为true,则进入中断模式(断点窗口的condition项,条件项)
  • 遇到某断点一定次数后,进入中断模式(断点窗口的hit count项)
  • 在遇到断点时,如果自上一次遇到断点以来变量的值发生了变化,就进入中断模式。

(断点只能用于调试模式,如果是发布模式会自动忽略所有断点!)

     进入中断模式的另外两种方式:
  • 在抛出一个未处理的异常时进入
  • 在生成一条判定语句时中断(assertion):Debug.Assert(); Trace.Assert(); 如:Trace.Assert(var<10, "var is out of range", "plz contact admin");

     监视变量的内容:
  • 中断模式下,鼠标移动到变量上,可以显示变量在中断情况下的值;
  • 工具提示窗口

    单步执行代码:
  • Step Into 执行并移动到下一条语句
  • Step Over 同上,但是不进入嵌套的代码块
  • Step Out 执行到代码块的末端处,在执行完语句后,重新进入中断模式。

     三个窗口:
  • Immediate窗口:可以执行与当前正在执行的代码不同的以外的代码
  • Command窗口:手动执行VS操作,可以与前者切换,且前者更常用
  • Call Stack窗口:调用堆栈

  1. 错误处理
     C#是包含“结构化异常处理”的语言。(SEH, Structured Exception Handling)

     Try Catch Finally:
     try{

     }catch(<exceptionType> e) when (filterIsTrue){

     }finally{

     }

     异常过滤器:
     如果存在两个处理相同异常类型的catch块,就只执行异常过滤器为true的catch块中的代码。
(待补充

    异常对话框:
     调试->异常菜单,

原创粉丝点击