一眨眼的功夫,自己已经学习asp.net的有一年的功夫了。虽然称不上什么大神,但是也有一点知识的积累。就写一片调试的入门文章给那些刚刚入门迷茫的童鞋们。希望你学习了我这篇文章能从迷茫的生活中找回编程的你。
对于程序员说永远也逃不了调试这个门槛。曾经记得有次,那是我还大一,学习的是c在vc下面,同学写了一段代码,就是计算每月的几日对应找出这 年的第几天。这个非常简单的问题我想谁都会有思路,但是我朋友代码写出来了,编译运行也都通过了,但偏偏就是得到的结果不对。我一看他的代码也没发现什么 问题,这个让我情何以堪,于是我当即设置了断点,运行了一下,一步一步的调试不到5分钟吧问题解决了。问题的所在是他把这个月的天数多加进去了也就是在月 这个for语句里面多了一个等号。这个很小的问题是不容易发现的。举这个例子是为了告诉读者调试对于程序员来说多么重要。我独家之言:不会调试的人永远不 会编程。
好了现在我们言归正传。写这边文章的目的是为了告诉那些开发asp.net的程序员如何调试,如何找到问题的所在。
调试技巧1:
最正规的调试,那就是配合系统的断点调试功能。首先我们新建一个页面,为了方便,我直接把代码写在页面的Page_load函数里面。这里我写的例子还是为了说明某月某日是这一年的第几天的问题。代码如下:
protected void Page_Load(object sender, EventArgs e)
{
//这里假设这一年是平年,每一个月的天数用枚举法列出来就可以计算出某月某日是第几天了
//先简单的测试一下我们输入的数据是否正确 对其所以的天数求和
Int32[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//利用Linq方法对其求和
months.Sum();
}
我们先把这个在解决方案里面找到这个页面然后右击这个页面把它设置为起始页。
然后在写代码的最左边左机一下设置一下断点。
好了一切的工作都已经完成了,我们开始调试把。按下F5,
我们的程序已经进入了调试的页面了如下:
在红色的里面多了一个黄色的箭头,表示程序调试到这里。这里有一点需要注意,就是黄色这句还没有执行。调试的命令这里备注一下F5表示的继续的执行 到下一个断点,不管中间是什么代码,程序顺序的执行到下一个断点。如果没有断点,那就直接跳转到运行状态了。F10表示的单句的执行调试命令但是如果遇到 调用函数之类就直接跳过函数调试,如果你觉得是函数有问题那就按F11;如果你的函数很有信心,那就按f10跳过函数的调试。个人觉得f10和f11唯一 的区别就是是否调试函数。
我这里调试按了一下f10跳转到下一个调试点。就说明这个跳水点以上的语句都执行了。
我们可以看一下months.Sum()的结果为多少了。右击months这个变量,然后选择快速查看
然后输入你想要查看的数据,比如我想查看months的和。
看到了没这里显示了value为365,就说明了我们数据是正确的。其实我们还有一种办法。查看我们的数据
在底部找到一个watch1的对话框点击它,
然后再他的Name中输入Months.Sum(),在右边就能显示了我们需要的数据了。
正规的调试方法就写到这里。
调试技巧2:
巧用Response.Write方法。我想很多的从asp和php转行过来的朋友都习惯用这种方法吧。比如我们要把要看一下求和的数据是多少,那就直接把结果Response.Write一下就可以了。
在用这个方法调试的时候记得在Response.Write后面加个return。原因很简单,就是你希望把你执行到这个地方的语句统统的显示出 来。用处:这种调试的方法对于在服务器上调试错误还是有帮助的。因为服务器上不需要安装开发环境,我们只能把出错前面的代码显示出来看一下哪里有问题。 (我以前也碰到过这样的例子,我写的动态的菜单,就是根据权限显示不同的菜单选项。我这些写好了整合到我同事那边也ok,可是过了3天问题来了,同时说放 到服务器上出现问题了,但是自己也是调试不出来,幸好有个工作了10年的同事过来帮忙,用Response.Write语句把sql语句输出来,发现了 sql语句里面的in是空的,没有数据当然会报错了,原来同事没有吧我写的数据脚本在服务器上运行,当时我也成长了)。
调试技巧3:
这种方法说白了不算是真正的调试方案,因为他的调试需要和数据库中查看哪里输错了。开发过项目的人都知道,一般的错误都是和数据库交互的时候产 生的,比较说,当我们插入的数据的长度超过了数据库规定的长度,那就出错了。好了那我该告诉你怎么调试了。首先打开SQL Server Profiler软件,如果你的sql没有自带的那就网站找一下 安装一下。
然后选择新建跟踪。文件菜单下面的图标。然后输入用户名密码登陆,在选择事件对话框中把只要选择RPC:completed、SQL:BatchCompleted、SQL:batchStarting这三个选项,然后选择运行对话框。
这个时候我们在asp.net与数据库操作试试看看发现了什么~
刚刚执行的语句被捕获到了,哈哈
是不是很神奇,这里需要注意几点,无论是数据库自己的操作或者是asp.net与数据库交互的操作这个SQL Server Profiler都会捕获到。其实如果你长久的开着这个页面会有很多的数据,那调试的时候,不希望在这么多条数据找东西吧,先清空一下跟踪的记录,在运行 代码就可以显示运行代码的语句了。
当然了这个SQL Server Profiler其实真正的用处不是这样的,他是sql 用来调优用的,我这里只是大材小用,希望微软不要找我哈哈。
就写到这里了。分享是一种快乐,但是分享者希望得到的更多地是读者的支持!
Stallman 先生认为最大的快乐是让自己发展的软件让大家来使用了!