一眨眼的功夫,自己已经学习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. Linux下压缩某个文件夹命令

    tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.ta ...

  2. shell之cut和tr 的命令的使用

    [root@data-1-3 ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ...

  3. haprox动态下线后端主机

    haproxy可以很好的支持主机下线,不需要编辑配置文件,也不需要重新reload服务,通过本身的socket发送指令即可: 当你的应用程序是高可用状态,一般部署的是>2的,这个时候就可以通过h ...

  4. Mysql数据库--语句整理/提升/进阶/高级使用技巧

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  5. AndroidStudio删除项目

    右键左上角的 项目名 右键 > delete 磁盘里的文件还需要手动删除

  6. vuex 命名空间

    默认情况下,模块内部的action mutation getter是注册在全局命名空间的,如果希望你的模块具有更高的封装度和复用性,你可以通过添加namespaced:true的方式使其成为带命名空间 ...

  7. String类无子类

    1. 关于final修饰符 参考文章: 浅析Java中的final关键字 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量 ...

  8. 十、外键约束FK(foreign key)

    1.定义 a.外键涉及到的术语:外键约束.外键字段.外键值. b.外键约束.外键字段.外键值三者之间的关系? 答:给某个字段添加外键约束之后,该字段称为外键字段,外键字段中的值是外键值. c.外键根据 ...

  9. 3-C++程序的结构1.3

    类的友元 一个类之外的函数,又与该类有特殊关系! 友元关系提供了不同类或对象的成员函数之间.类的成员函数与一般函数之间进行数据共享的机制.通俗地说,友元关系就是一个类主动声明那些其他类或函数是它的朋友 ...

  10. E20190308-hm

    sweep vt. 扫除; 打扫,清理; 彻底搜索; 掠过; vi. 打扫; 扫过; 蜿蜒; 大范围伸展; n. 打扫; 延伸; 挥动; 全胜;