比较版本

在Venkman中使用断点

更改版本

修订版 255418:

由 Andyyard 在 进行的修订 255418

修订版 227424:

由 Andyyard 在 进行的修订 227424

标题:
在Venkman中使用断点
在Venkman中使用断点
网址缩略名:
在Venkman中使用断点
在Venkman中使用断点
标签:
Venkman, Tools
内容:

修订版 255418
修订版 227424
t7    <p>t
8      这篇文章包含在以<a href="cn/Venkman%e5%85%a5%e9%97%a8">Venkman入门</a
>>开篇的一系列关于Venkman的文档中。 
9    </p>
10    <p>
11      调试任何一种编程语言的一个基本任务是设置“断点”。断点表示了代码的执行在什么位置暂停。当你在像Venkman这类调试程
>序中设置断点时,你可以暂停程序的执行,来检查变量,对象和其它的运行参数。 
12    </p>
13    <p>
14      这篇文章描述了在JavaScript中的断点,和如何在Venkman中设置和使用断点。
15    </p>
16    <h3 id=".E5.9F.BA.E6.9C.AC.E7.9A.84.E6.96.AD.E7.82.B9" name="
>.E5.9F.BA.E6.9C.AC.E7.9A.84.E6.96.AD.E7.82.B9"> 
17      基本的断点
18    </h3>
19    <p>
20      “Stop”按钮和<code>debugger</code>命令是JavaScript调试器中很关键的要素,但是当你深
>入调试极其复杂的代码时,你会发现使用基本的工具已经无能为力,这时你需要断点来帮忙了。 
21    </p>
22    <h4 id=".E6.96.AD.E7.82.B9.E7.9A.84.E7.B1.BB.E5.9E.8B" name="
>.E6.96.AD.E7.82.B9.E7.9A.84.E7.B1.BB.E5.9E.8B"> 
23      断点的类型
24    </h4>
25    <p>
26      Venkman有两种类型的断点。第一种,也是最常见的,叫做“硬断点”。A hard breakpoint repres
>ents an actual trap instruction included in the pseudocode of a c 
>ompiled function. Hard breakpoints can only exist in the context  
>of a function currently "live" in the browser. Hard breakpoints a 
>re the ones that actually stop program execution. 
27    </p>
28    <p>
29      第二种类型的断点,“将来断点”,represents a promise from Venkman to set a 
>hard breakpoint as soon as it is possible. Future breakpoints are 
> used when you want to stop in a script that has not yet been com 
>piled. The most common use of future breakpoints is to stop in a  
>"top level" script (script that executes outside of any function) 
>, or script that executes during the onLoad event of a page. When 
> a script is loaded that matches the URL of a future breakpoint,  
>and has executable code at the specified line, Venkman will autom 
>atically set a future breakpoint. 
30    </p>
31    <p>
32      除了下面提到的这个差别以外,断点工作在Venkman和工作在其它调试器中的情况是很相似的。你在源代码视图左边框看到的点
>显示了哪一行包含了可执行的代码,同时也表明了那一行可以设置硬断点。 
33    </p>
34    <p>
35      <img align="none" alt="“Figure 1” Venkman“源代码”视图中标明的可执行代码" 
>fileid="2699" src="File:cn/Media_Gallery/Venkbreak-source.png"> 
36    </p>
37    <h4 id=".E8.AE.BE.E7.BD.AE.E6.96.AD.E7.82.B9" name=".E8.AE.BE
>.E7.BD.AE.E6.96.AD.E7.82.B9"> 
38      设置断点
39    </h4>
40    <p>
41      在源代码视图中点击一个圆点,就会在这一行设置一个断点。Venkman会在这行代码执行前停止代码的运行。当一个断点被设置
>后,这一行左侧的边沿就会变成字母"B",如Figure 2。如果你在设置完断点后再次执行代码,Venkman会在第81行停止运行。 
42    </p>
43    <p>
44      <img align="none" alt="“Figure 2” 设置断点" fileid="2697" src="
>File:cn/Media_Gallery/Venkbreak-set.png"> 
45    </p>
46    <p>
47      Venkman会在“已加载脚本”视图中显示一个或更多已经设置好的断点,一个红色的圆点会出现在已设置有断点的文件旁,后面
>还会显示断点所在的函数的行号。 
48    </p>
49    <p>
50      <img align="none" alt="“Figure 3” 在“已加载脚本”视图中的带有断点的文件" file
>id="2709" src="File:cn/Media_Gallery/Venkintro-scripts.png"> 
51    </p>
52    <h4 id=".E4.BD.BF.E7.94.A8.E6.96.AD.E7.82.B9.E8.BF.9B.E8.A1.8
>C.E8.B0.83.E8.AF.95" name=".E4.BD.BF.E7.94.A8.E6.96.AD.E7.82.B9.E 
>8.BF.9B.E8.A1.8C.E8.B0.83.E8.AF.95"> 
53      使用断点进行调试
54    </h4>
55    <p>
56      当你设置一个断点后,你就给了Venkman(或是任何你使用的调试器)显示执行环境信息的机会。 调试脚本或程序,最重要的
>表现是,它可以检查函数返回值,错误,计数器,变量作用范围,这些改变了脚本执行的路线。 
57    </p>
58    <p>
59      在Figure 1中的<code>onFlipX</code>函数,例如,使用变量<code>newSign</cod
>e>来指明用什么图片表示fish。当你在第81行设置一个断点,你可以激活浏览器窗口的页面,Venkman停止代码的执行,当他加入了 
><code>onFlipX</code>函数。停在那里,Venkman在本地变量视图中显示了变量<code>newSign</co 
>de>的值"1"。 
60    </p>
61    <p>
62      <img align="none" alt="“Figure 4” 在断点处的本地变量" fileid="2700" 
>src="File:cn/Media_Gallery/Venkbreak-vars.png"> 
63    </p>
64    <p>
65      使用断点和交互视图,你可以改变Venkman显示的变量值(仅仅是在调试环境的上下文中),还可以观察这些改变怎样影响代码
>的执行。 
66    </p>
67    <p>
68      <img align="none" alt="“Figure 5” 在断点处与脚本结合" fileid="2696" 
>src="File:cn/Media_Gallery/Venkbreak-interact.png"> 
69    </p>
70    <p>
71      如果你想获得更多关于“调试动作”的信息,请浏览Venkman入门的<a href="cn/Venkman_Introd
>uction#Debugging_Basics">调试基础</a>章节。 
72    </p>
73    <h4 id=".E6.B8.85.E9.99.A4.E6.96.AD.E7.82.B9" name=".E6.B8.85
>.E9.99.A4.E6.96.AD.E7.82.B9"> 
74      清除断点
75    </h4>
76    <p>
77      点击两次边框来清除断点。第一次单击会清除硬断点,只保留一个用字母“F”表示的将来断点。第二次单击将会清除将来断点。
78    </p>
79    <p>
80      <img align="none" alt="“Figure 6” 将来断点" fileid="2695" src="
>File:cn/Media_Gallery/Venkbreak-future.png"> 
81    </p>
82    <h3 id=".E9.AB.98.E7.BA.A7.E6.96.AD.E7.82.B9" name=".E9.AB.98
>.E7.BA.A7.E6.96.AD.E7.82.B9"> 
83      高级断点
84    </h3>
85    <p>
86      Venkman允许你将一个断点和一段脚本关联在一起:当遇到断点时,这个脚本就会被执行。这个针对关联脚本的高级特性和其他
>一些选项,你可以在将来断点属性对话框中找到他们,你只需要右键单击一个断点,选择“属性”。 
87    </p>
88    <p>
89      <img align="none" alt="“Figure 7” 将来断点属性对话框" fileid="2694" 
>src="File:cn/Media_Gallery/Venkbreak-future-dialog.png"> 
90    </p>
91    <p>
92      一旦你创建了一个与断点相关联的脚本,你就可以从将来断点属性对话框中选择一些不同的选项,这些选项决定了Venkman如何
>处理关联脚本的输出。下面是经常用到的选项: 
93    </p>
94    <ul>
95      <li>“Continue regardless of result” 使Venkman在运行完断点脚本后继续执行正常
>的脚本。这对于试验不工作的额外脚本非常有用。 
96      </li>
97      <li>“Stop regardless of result” 使Venkman在运行完断点脚本后停止执行正常的脚本,
>这允许你检查程序的状态。 
98      </li>
99      <li>“Stop if result is true” 非常有效的将它当作一个条件断点。如果断点脚本返回true值(
>它并不必须是一个严格的布尔值<code>true</code>,比如非<code>null</code>、非空字符串、非零、非<c 
>ode>undefined</code>、非<code>false</code>都是可以接受的),脚本执行会继续下去。如果返回fa 
>lse值,Venkman会在断点处停止脚本的执行。 
100      </li>
101      <li>“Early return from caller with result” will cause the f
>unction that the breakpoint is set in to return the value of the  
>breakpoint script as its result, immediatley after the breakpoint 
> script completes. 
102      </li>
103      <li>The “Pass exceptions to caller” checkbox allows you to 
>pass exceptions thrown by the breakpoint script directly to the c 
>aller. Normally, if the breakpoint script generates an exception, 
> Venkman assumes you made a mistake and stops execution after dis 
>playing the exception. If you would like to see what your code do 
>es when exceptions are thrown at it, check "Pass exceptions to ca 
>ller", and thrown an exception from the breakpoint script. 
104      </li>
105      <li>The “Log result” checkbox tells Venkman you want the re
>sult of the script to show up in the Interactive Session View. Wh 
>en used with the “Continue regardless of result” option, the brea 
>kpoint can be used as a simple log message. 
106      </li>
107      <li>The number of times the breakpoint has been hit is pass
>ed in as a parameter to the breakpoint script. To reset the count 
>, enter a 0 in the "Trigger count" field. 
108      </li>
109    </ul>
110    <h4 id=".E5.85.B3.E9.94.AE.E6.80.A7.E6.B3.A8.E9.87.8A" name="
>.E5.85.B3.E9.94.AE.E6.80.A7.E6.B3.A8.E9.87.8A"> 
111      关键性注释
112    </h4>
113    <p>
114      You can also embed scripted breakpoints directly into the s
>ouce code you are debugging by using a Venkman facility called <i 
>>meta comments</i>. Meta comments are specially formatted comment 
>s that pull in the script named after the comment and specify how 
> to treat the output of that script. The following meta comment t 
>ypes are available: 
115    </p>
116    <ul>
117      <li>The <code>//@JSD_LOG</code> comment will insert a break
>point which is set to execute the script that follows without sto 
>pping. The result of the evaluation will be logged to the Interac 
>tive Session. 
118      </li>
119      <li>The <code>//@JSD_BREAK</code> comment will insert a bre
>akpoint which is set to execute the script that follows and stop  
>if the result is true. 
120      </li>
121      <li>The <code>//@JSD_EVAL</code> command will insert a brea
>kpoint which is set to execute the script that follows without st 
>opping and without logging the result. 
122      </li>
123      <li>These meta comments can be used to insert debug-only co
>de in your scripts with zero impact on production code. 
124      </li>
125    </ul>
126    <p>
127      To enable meta comments in a script, select "Scan for Meta 
>Comments" from the context menu of the file in the Loaded Scripts 
> view. 
128    </p>
129    <p>
130      When you add a meta comment, a normal breakpoint is created
>. You can change or delete this breakpoint just as you would a br 
>eakpoint created by hand. 
131    </p>
132    <h3 id="Resources" name="Resources">
133      Resources
134    </h3>
135    <ul>
136      <li>
137        <a href="cn/Venkman_Introduction">Venkman Introduction</a
>>—previous article on Venkman. 
138      </li>
139      <li>
140        <a href="cn/Venkman">Venkman's home page on Devmo</a>.
141      </li>
142    </ul>
143    <div class="originaldocinfo">
144      <h3 id="Original_Document_Information" name="Original_Docum
>ent_Information"> 
145        Original Document Information
146      </h3>
147      <ul>
148        <li>Authors: Robert Ginda, Ian Oeschger
149        </li>
150        <li>Published 02 May 2003
151        </li>
152      </ul>
153    </div>
154    <hr>
155    <p>
156      --<a href="User:Andyyard">AndyYard</a> 01:46 2007年11月15日 (P
>ST) 
157    </p>

返回历史