一眨眼的功夫,自己已经学习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 先生认为最大的快乐是让自己发展的软件让大家来使用了!

asp.net调试技巧的更多相关文章

  1. VS2017调试技巧

    Visual Studio的调试技巧   调试技巧是衡量程序员水平的一个重要指标.掌握好的调试技巧与工具的使用方法,也是非常重要的.*** 演示环境: VS2017C#*** 演示用的代码: publ ...

  2. Visual Studio 调试技巧:10 篇热文汇总

    本文精选了 DotNet  2017年11月份的10篇热门文章.其中有技术分享.技术资源. 注:以下文章,点击标题即可阅读 <Visual Studio的调试技巧 > 调试技巧是衡量程序员 ...

  3. 【工具】VS2010常用调试技巧(1)

    调试是一个程序员最基本的技能,其重要性不言自明.不会调试的程序员就意味着他即使会一门语言,却不能编制出好的软件.本文就本人在开发过程中常用的调试技巧作下简单呢介绍,希望对大家有所帮助,能力超群者请绕道 ...

  4. Visual Studio高级调试技巧

    1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...

  5. 【转】你所不知道的Android Studio调试技巧

    这篇写Android studio debug技巧个人觉得写得不错,转自:http://www.jianshu.com/p/011eb88f4e0d# Android Studio目前已经成为开发An ...

  6. VS调试技巧,提高调试效率(转):

    如果你还没有使用过这些技巧,希望这篇博文能帮你发现它们. 它们学起来很容易,能帮你节省很多时间. 运行到光标(Ctrl+ F10) 我经常看见人们是这样来调试应用程序的: 他们在应用程序需要调试的代码 ...

  7. iOS各种调试技巧豪华套餐

    转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...

  8. xcode调试技巧

    xode报错有时挺无厘头,完全不知道哪里出的问题,最后还得用排除法,记录一些工作中认为有用的调试技巧 1.左侧视图点断点视图,左下角点加号,选择exception breakpoint,类型选c++, ...

  9. 你所不知道的Android Studio调试技巧

    转载:http://www.jianshu.com/p/011eb88f4e0d Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug ...

随机推荐

  1. 测试jdbc连接下,mysql和mycat的吞吐性能

    最近一个项目需要数据库有较大的吞吐量,因为项目要求的访问量和数据量较大,决定采用一个数据库中间件来对数据库进行管理.经过一番查询,决定使用阿里的一个开源项目-mycat.因为mycat基于mysql, ...

  2. 理解 Android Fragment

    /***************************************************************************************** * 理解 Andr ...

  3. 使用escape、encodeURI 和 encodeURIComponent 解决url中文乱码问题

    escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学者, ...

  4. CF-798C

    C. Mike and gcd problem time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  5. TypeScript完全解读(26课时)_2.TypeScript完全解读-基础类型

    2.TypeScript完全解读-基础类型 src下新建example文件夹并新建文件.basic-type.ts.截图中单词拼错了.后需注意一下是basic-type.ts 可以装tslint的插件 ...

  6. 16.oauth2 + oidc 实现 client部分

    把授权和认证过的Server启动一下先 因为代码是之前的代码,所以有些代码需要清除一下 之类注释掉,因为这里暂时没有用到EFCode了 运行的时候发现一点错误 发现登陆的时候使用的RegisterVi ...

  7. 爬虫代码实现六-Queue队列实现循环抓取

    StartDSJCount : package com.dajiangtai.djt_spider.start; import java.util.List;import java.util.Queu ...

  8. 爬虫代码实现四:采用Hbase存储爬虫数据(2)

    导入hbase的jar包,在maven仓库找:进入http://mavenrepository.com/,输入hbase client,选择apache hbase client, 点击进入,选择 点 ...

  9. mysql使用小结

    一.修改 mysql 的 root 密码 mysql> use mysql;  mysql> update user set password=password('123456') whe ...

  10. lightoj1066【BFS】

    题意: 就是按照A->B->C->D....去拿,求步数: 思路: 有一个注意点:如果碰到合法字母吃掉,再以后的某次可以重新到改点: BFS的因为标记而减少了重复位置的到达,但是按照 ...