程序的追踪及检视

发表于:2007-07-14来源:作者:点击数: 标签:
要让程序继续执行,只要按下「Continue」按钮就会执行目前断点以下的程序代码。由于我们这个例子在循环中执行,因此程序执行下一个I 时又会停在这一行。由于刚才我们把I 的值改成1,所以只要再按两次Continue 后I 的值为3,程序执行完毕;最后网页出现我们程


    要让程序继续执行,只要按下「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 按钮逐行执行,可以看到变量的内容变化。

原文转自:http://www.ltesting.net