动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   .Net → 阅读文章

 程序的追踪及检视

作者来源: 
阅读 1255 人次 , 2006-3-29 4:32:00 


要让程序继续执行,只要按下「continue」按钮就会执行目前断点以下的程序代码。由于我们这个例子在循环中执行,因此程序执行下一个i 时又会停在这一行。由于刚才我们把i 的值改成1,所以只要再按两次continue 后i 的值为3,程序执行完毕;最后网页出现我们程序的结果:



step...
要更详细的执行程序,可以使用step into、step over 以及step out。我们以下列程序为例:

<script language="vb" runat="server">
sub page_load(sender as object,e as eventargs)
dim i as short
for i = 0 to 5
test(i)
next
end sub
sub test(byval j as short)
response.write("i=")
response.write(j.tostring())
response.write("<br>")
end sub
</script>

上述范例中我们在呼叫test 这个程序的叙述加入断点,然后浏览ex11.aspx,即进入中断模式;如下图所示:



我们按下「step into」按钮,发现黄色箭头即往下移动一行,再按「step into」一次,程序即跳入test 这个程序中执行:



接下来我们直接按下「step out」按钮,发现程序的执行跳出test 这个程序,而停留在呼叫test这个程序的下一行叙述:


 
 「step out」不是逐行执行,而是一口气将程序内的所有程序代码执行完毕,再跳到呼叫该程序的下一行。接下来我们按下「step over」按钮,发现程序还是一次执行一行,而停在「test(i)」这个叙述上。我们再按一次「step over」按钮时,发现程序并没有跳入test 程序中,而是停留在「next」上面,如下所示:



这是因为「step over」遇到过程调用时,一次就将程序内的程序执行完毕,并不一行一行的执行所致。



locals window
我们在上述例子追踪程序时,对于变量的检视还要跳到实时运算窗口输入「?」来观察,实在不太方便。此时我们可以利用locals window(区域窗口),locals window 可以列出目前所在程序中的所程序阶层变量以及对象的值,如下图所示:



  我们观察到变量i 的内容为1,而且型态为short。其中除了变量i 之外,还一并列出了其它项目。me 代表目前的page 对象,我们可以展开来观察page 对象的所有成员,而sender 表示触发此程序的对象为何,e 则是代表参数对象的内容。当我们再按一次「step over」时,发现localwindow 中的变量i 自动由1 更新为2:


locals window 除了可以显示变量以及对象的内容外,在locals window 中也可以直接修改变量或对象的值。例如我们将i 的值更改为3,如下图所示:



接下来我们按下「step into」按钮跳入test 程序中,发现locals window 会自动显示test 程序中的变量j,如下所示:



call stack
call stack 可以让我们追踪程序之间的呼叫关系。程序在执行的时候若遇到过程调用,原来的程序便会暂时停止执行而进入程序中执行;待程序执行完毕后,才又会回到原先的程序中执行。此时这些程序的执行就像堆积木一样,先执行的放下面,后执行的再堆上去;必须要等到后面堆上去的程序执行完毕后,才执行迭在下方的程序。这种执行的方式我们称为「先进后出」,也可以称为「堆栈」。一但程序比较复杂时,一定会有这种程序内呼叫其它程序的状况,此时要追踪这种我们称为「堆栈」的过程调用,就可以利用「call stack」。由于刚刚我们跳入了test 这个程序内,我们知道test 程序是在page_load 事件程序中被呼叫的,所以除了test 目前是最高层的程序之外,它的下一层就是page_load 程序。我们按下「call stack」按钮来观察,如下图所示:



我们发现call stack 窗口中的最上层对象果然是test 程序,并且在前面用黄色箭头标注,表示目前程序在这个程序中执行。如果我们要追踪test 程序被上层所呼叫的地址,还可以在page_load 程序上双击鼠标左键,除错器便会以绿色箭头标出,如下图所示:


quick watch
quick watch(快速检视)是另外一种可以快速检视变量值的窗口。我们可以将键盘光标停在想要观察的变量上,然后按下「quick watch」按钮或按鼠标右键选择,如下图所示:


选择「quick watch」后即出现变量的数据,如下图所示:


另外注意立即运算窗口以及quick watch 可以检视的变量,只限制于目前所在的程序内。

watch window
watch window(监视窗口)是另一个可以检视变量值的工具,我们点选「watch window」显示watch window,如下图所示:



接下来我们可以在想要监视的变量上按鼠标右键,选择「add watch」;或是先将变量标记下来,然后利用拖放的方式将变量拖到watch window,如下图所示:



而watch 窗口中显示的值可以在10 进制或16 进制切换,只要在watch 窗口中按下右键并核取或取消「hexadecimal display」选项,即可切换显示的方式。

接着我们用step into 按钮逐行执行,可以看到变量的内容变化。

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:档案上传处理
· 下一篇:使用Debug 工具列
· 从 Visual Basic 6.0 到 Visual Basic.NET 的转换(4)
· ado.net数据操作全接触一(insert,update,delete)
· 从ASP迁移至ASP+ --处理会话变量(Session Variables) 
· 缓存类的实现(C#)
· JSP与Servlets的区别


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077