单步执行

有三种,

一种是每次执行一行(F10);

一种是每次执行一行,但遇到函数调用就会跳到被调用的函数里(F11);

一种是直接执行当前函数里剩下的指令,返回上一级函数(Shift+F11)。

还有一种后悔药,设为下一句(Set Next Statement),即下一句会被执行的语句(右击设置或者快捷键:Ctrl+Shift+F10),但要注意在调试与数据有关的时候,设置下一句有可能会报异常。如在调试向DataTable中添加行的时候,已经存在的行不能重复被添加到DataTable中

调试技巧篇

使用快捷键会大大提升我们的调试效率,常用的调试快捷键:

F5 启动调试

F10 执行下一行代码,但不执行任何函数调用。

F11 在执行进入函数调用后,逐条语句执行代码。

Shift + F11 执行当前执行点所处函数的剩余行。

Shift + F5 停止运行程序中的当前应用程序。可用于“中断”模式和“运行”模式。

条件中断

假如你写了个for循环,而且循环的次数比较多,如下代码,现在我们知道在i=50的时候会有异常,那我们不可能按50次F5去调试这代码,不然这效率….

private void ConditionDebug()
{
for (int i = ; i < ; i++)
{
if (i==)
{
//some error code here
Console.WriteLine("i=50 here");
}
}
}

我们可以直接利用vs提供的功能修改变量i的值,一开i=0,即刚进入for循环中,我们设置将i改为49并回车,再调试一次,会发现i=50; 如下图

当然我们也可以直接在代码里写代码以达到这个目的,代码如下

private void ConditionDebug()
{
for (int i = ; i < ; i++)
{
System.Diagnostics.Debug.Assert(i != );
if (i==)
{
//some error code here
Console.WriteLine("i=50 here");
}
}
}

使用了调试中的Assert(断言),当执行程序后会弹出如下的提示框,点击Ingore(忽略)即可,

会发现此时i已经为50了,有兴趣的朋友可以看看Assert的其他用法。

C#调试方法的更多相关文章

  1. Linux环境下段错误的产生原因及调试方法小结(转)

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...

  2. linux Ubuntu(Segmentation fault)段错误出现原因及调试方法

      在linux下编译了一个程序,尝试运行的时候出现: Segmentation fault (core dumped) 初步确认为...完全不知道是什么玩意. 于是找度娘了. ----------- ...

  3. kernel启动console_init之前console不可用时发生crash的调试方法

    http://code.google.com/p/innosoc/wiki/KernelBootCrashDebug 注: 如在i386_start_kernel中加入:early_printk(&q ...

  4. Linux环境下段错误的产生原因及调试方法小结

    转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...

  5. 【matlab】MATLAB程序调试方法和过程

    3.8  MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...

  6. 二十四、【开源】EFW框架Winform前端开发之项目结构说明和调试方法

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  7. Linux的段错误调试方法

    linux段错误的调试方法 相关博文: http://blog.csdn.net/htianlong/article/details/7439030 http://www.cnblogs.com/pa ...

  8. Linux - Shell脚本调试方法

    Shell脚本调试选项 Shell本身提供一些调试方法选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误. -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出. -x,提供跟踪执 ...

  9. intellij 调试方法

    intellij 调试方法 转自 http://www.th7.cn/Program/net/201410/296492.shtml

  10. JavaScript常见调试方法

    编辑导语:javascript调试方法,常见使用alert和console来定位出错和输出的结果是否是想要的,在chrome中,还可以使用断点来看运行的情况等,本文介绍了比较全面的调试方法,你知道co ...

随机推荐

  1. Android -- 自定义权限

    在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作.如果应用需要执行某些操作,就需要声明使用这个操作对应的权限. (在manifest ...

  2. PRML读书会第五章 Neural Networks(神经网络、BP误差后向传播链式求导法则、正则化、卷积网络)

    主讲人 网神 (新浪微博:@豆角茄子麻酱凉面) 网神(66707180) 18:55:06 那我们开始了啊,前面第3,4章讲了回归和分类问题,他们应用的主要限制是维度灾难问题.今天的第5章神经网络的内 ...

  3. 通过Ajax实现增删改查

    项目链接:https://github.com/shuai7boy/Ajax_CRUD 简要截图:

  4. 0930MySQL中实现高性能高并发计数器方案(例如文章点击数)

    转自http://www.jb51.net/article/56656.htm 这篇文章主要介绍了MySQL中实现高性能高并发计数器方案,本文中的计数器是指如文章的点击数.喜欢数.浏览次数等,需要的朋 ...

  5. HIbernate的对象状态

    *临时状态对象: session中没有缓存,且在数据库中没有对应数据. User user1=new User(null,"c50",18); *持久化状态对象: session中 ...

  6. Linux下运行memcached失败

    Linux下运行memcached失败 1.错误信息如下 [root@localhost ~]# memcached can't run as root without the -u switch 2 ...

  7. 项目tomcat启动停在Initializing Spring root WebApplicationContext

    来源于:http://ourteam.iteye.com/blog/1270699 某日,再次启动项目,spring一直停在这一句: Initializing Spring root WebAppli ...

  8. iOS开发小技巧-修改SliderBar指针的样式(牢记这个方法,只能通过代码来修改)

    代码: // 修改进度条的指针图片 [self.progressSlider setThumbImage:[UIImage imageNamed:@"player_slider_playba ...

  9. 【POJ 2774】Long Long Message 最长公共子串

    还是模板啊,手残&&打成||查错查了1h+TAT #include<cstdio> #include<cstring> #include<algorith ...

  10. java中的hashSet和Treeset的分析

    hashset中的元素 treeset中的元素要实现comparable接口