asp.net调试技巧
一眨眼的功夫,自己已经学习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调试技巧的更多相关文章
- VS2017调试技巧
Visual Studio的调试技巧 调试技巧是衡量程序员水平的一个重要指标.掌握好的调试技巧与工具的使用方法,也是非常重要的.*** 演示环境: VS2017C#*** 演示用的代码: publ ...
- Visual Studio 调试技巧:10 篇热文汇总
本文精选了 DotNet 2017年11月份的10篇热门文章.其中有技术分享.技术资源. 注:以下文章,点击标题即可阅读 <Visual Studio的调试技巧 > 调试技巧是衡量程序员 ...
- 【工具】VS2010常用调试技巧(1)
调试是一个程序员最基本的技能,其重要性不言自明.不会调试的程序员就意味着他即使会一门语言,却不能编制出好的软件.本文就本人在开发过程中常用的调试技巧作下简单呢介绍,希望对大家有所帮助,能力超群者请绕道 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
- 【转】你所不知道的Android Studio调试技巧
这篇写Android studio debug技巧个人觉得写得不错,转自:http://www.jianshu.com/p/011eb88f4e0d# Android Studio目前已经成为开发An ...
- VS调试技巧,提高调试效率(转):
如果你还没有使用过这些技巧,希望这篇博文能帮你发现它们. 它们学起来很容易,能帮你节省很多时间. 运行到光标(Ctrl+ F10) 我经常看见人们是这样来调试应用程序的: 他们在应用程序需要调试的代码 ...
- iOS各种调试技巧豪华套餐
转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...
- xcode调试技巧
xode报错有时挺无厘头,完全不知道哪里出的问题,最后还得用排除法,记录一些工作中认为有用的调试技巧 1.左侧视图点断点视图,左下角点加号,选择exception breakpoint,类型选c++, ...
- 你所不知道的Android Studio调试技巧
转载:http://www.jianshu.com/p/011eb88f4e0d Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug ...
随机推荐
- openssl生成公钥私钥对 加解密
在计算机软件开发世界中,编程语言种类极多,数据在各种语言的表现形式可能有所差异,但数据本身的处理可能,或者说本质上是完全一样的:比如数据在某个算法中的运算过程是一样的.在这里,我以加密与解密来作为例子 ...
- BZOJ_1296_[SCOI2009]粉刷匠_DP
BZOJ_1296_[SCOI2009]粉刷匠_DP Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能 ...
- C#控件刷新
; ; foreach (string gen in fn_gen) { //MessageBox.Show(gen); Bitmap Bi = new Bitmap(gen); //使用打开的图片路 ...
- Servlet中init-param与context-param的区别
web.xml文件中Servlet中配置如下: <servlet> <servlet-name>loginServlet</servlet-name> <se ...
- codevs-1204
1204 寻找子串位置 题目描述 Description 给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置. 输入描述 Input Description 仅一行包含两个 ...
- TypeScript完全解读(26课时)_17.装饰器
实验性的特性,需要在tslint里面把这项设置为true 作用域类的声明方法.访问符.属性和参数上 使用@符号加一个名字来定义,名字必须是一个函数,或者求值后是一个函数 装饰器工厂,setPro当做一 ...
- 安全运维之关于个人ip定位与网站监控的分析
场景: 后台:有人盗刷我的短信接口.小偷偷我手机.无良黑客黑我网站 前台:发个欺骗链接或者说我在网上举报谁谁谁附带一个跳转url获取对方ip....... How to solve: ...
- HTML学习笔记(一)HTML的一些概念区别
HTML HTML 指超文本标记语言.在 HTML 4 中,有若干的标签和属性是被废弃的,替换成style对应的属性 应该避免使用下面这些标签和属性: 标签 描述 style <center&g ...
- 51nod 1099【贪心】
思路: 我们可以思考对于仅仅两个元素来说,A,B; 先选A的话是会 A.b+B.a; 先选B的话是会 B.b+A.a; 所以哪个小哪个就放前面; #include <cstdio> #i ...
- 求N!的长度【数学】
转自:http://blog.csdn.net/fengdian29147001/article/details/11992755 给一个数X,len=log10(X)+1就是X这个数的长度 ①:当N ...