`
bigt
  • 浏览: 44662 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用 FlashBuilder4 的 DEBUG 界面调试程序

阅读更多
  1. 启动调试会话
  2. 添加和删除断点
  3. 设置条件断点
  4. 在“断点”视图中管理断点
  5. 在“调试”视图中管理调试会话
  6. 使用“控制台”视图
  7. 在“变量”视图中管理变量
  8. 更改变量的值
  9. 查找变量
  10. “变量”视图中表示变量的图标
  11. 使用“表达式”视图
  12. 表达式示例
  13. 表达式求值的局限性
  14. 使用观察点
  15. 使用“运行至行”

 

 

 

调试应用程序的过程与运行应用程序的过程类似。但是,进行调试时,可以控制应用程序何时停止于代码中的特定点、是否要监视重要变量,并且可以测试对代码进行的修正。运行和调试都使用配置来控制应用程序的启动方式。调试应用程序时,将运行应用程序文件的调试版本。

有关 Flash 调试透视图中可用的调试工具的概述,请参阅 Flash 调试透视图。

在某些情况下,系统会提示您查看 Eclipse 日志文件。有关更多信息,请参阅日志文件中的 Eclipse 环境错误。

启动调试会话
要开始调试会话,请在 Flash 调试透视图中运行应用程序启动配置。

调试应用程序
在 Flex 包资源管理器中,选择要调试的项目。

在主工作台工具栏中选择“调试”按钮。

注: “调试”按钮包含两个元素:主操作按钮和一个下拉列表,后者显示项目中可以运行和调试的应用程序文件。如果单击主操作按钮,将调试项目的默认应用程序文件。也可以单击下拉列表,并选择项目中的任何应用程序文件来进行调试。还可以访问启动配置对话框,并通过选择“调试”命令创建或编辑启动配置。
如果项目尚未构建,Adobe® Flash® Builder™ 将构建并在调试模式下运行项目。

应用程序将出现在默认 Web 浏览器或独立 Flash Player 中,随后您可以使用 Flash Builder 调试器与它交互。

到达断点后,将在工作台中激活 Flash 调试透视图。

在插件配置中启动调试会话
在 Flash Builder 的插件配置中,“调试”命令的工作方式稍有不同。在此配置中,它不运行选定的项目,而是调试最近一次启动的配置。您也可以从最近启动的配置列表中进行选择。

添加和删除断点
可通过断点暂停应用程序的执行,以便检查代码并使用 Flash Builder 调试工具尝试修正错误。调试应用程序时,可在代码编辑器中添加断点,然后在“断点”视图中管理断点。

可以在可执行代码行中添加断点。调试器仅在包含以下内容的代码行中设置的断点处停止:

包含 ActionScript 事件处理函数的 MXML 标签,如 <mx:Button click="dofunction()" ...>

ActionScript 行,如包含在 <mx:Script> 标签或 ActionScript 文件中的 ActionScript 行

ActionScript 文件中的任何可执行代码行

可在编写代码时设置断点,也可在调试时设置断点。

在代码编辑器中设置断点
打开一个包含 ActionScript 代码的项目文件。

找到要设置断点的代码行,然后双击标记栏以添加断点。

标记栏靠近代码编辑器的左边缘。

系统会将断点标记添加到标记栏和 Flash 调试透视图的“断点”视图中的断点列表中。

当调试器遇到断点时,将暂停应用程序,显示 Flash 调试透视图,并用断点标记代码行。在代码编辑器中将加亮相应代码行。您随后可使用调试命令与代码交互。(请参阅在“调试”视图中管理调试会话。)

在代码编辑器中删除断点
 在标记栏中,双击现有断点。

断点即从标记栏和 Flash 调试透视图的“断点”视图中删除。


可以在“断点”视图中管理断点。可以删除列表中的一个或全部断点,或禁用断点以后再重新启用(请参阅在“断点”视图中管理断点)。

设置条件断点
可以为断点指定条件,以在满足特定条件时停止执行调试器。设置条件断点时,指定一个要在调试会话期间求值的 ActionScript 表达式。配置条件断点,使调试器在下列任一条件下终止执行:

表达式计算结果为 true。

表达式的值发生更改。

达到指定的命中计数。

设置条件断点
从断点的上下文菜单中,选择“断点属性”。

在“断点属性”对话框中,指定下列任一选项:

启用

在启用或禁用断点间切换。

命中计数

选择“命中计数”可启用断点计数器。为“命中计数”指定一个数字。

如果同时指定了“命中计数”和“启用条件”,则“命中计数”是满足指定条件(计算结果为 true 或条件的值发生更改)的次数。

如果仅指定“命中计数”,则“命中计数”是到达断点的次数。

启用条件

选择“启用条件”并输入要求值的 ActionScript 表达式。有关求值运算支持的表达式类型的信息,请参阅表达式示例。
注: Flash Builder 将检查表达式的语法并将语法错误通知给您。如果表达式中包含赋值运算符,Flash Builder 将显示警告。
暂停发生条件:

指定终止执行的条件:条件表达式求值结果为 true,或表达式的值发生更改时。

在“断点”视图中管理断点
在调试会话期间,可在“断点”视图中管理断点。可以删除、禁用、启用或跳过断点。

“断点”视图工具栏中提供了下列命令(从左到右显示):


按钮/命令
 说明
 
删除选择的断点
 删除所选断点。
 
删除所有断点
 删除所有断点。
 
显示所选目标支持的断点
 显示适用于所选调试目标的断点。
 
转至文件以获取断点
 在代码编辑器中打开包含断点的文件(如果尚未打开)并加亮设置了断点的代码行。也可以直接双击断点,以在代码编辑器中显示此断点。
 
跳过所有断点
 跳过所有断点。
 
全部展开
 展开全部断点。
 
全部折叠
 折叠全部断点。
 
与“调试”视图链接
 链接到“调试”视图。
 

在“断点”视图中删除断点
可在“断点”视图中通过断点工具栏删除一个、几个或所有断点。

 在断点列表中选择一个或多个断点,然后单击“删除选择的断点”。

也可以通过一次操作删除“断点”视图中的所有断点。

从“断点”视图中删除所有断点
 在“断点”视图中,单击“删除所有断点”。

在“调试”视图中管理调试会话
“调试”视图是 Flash 调试透视图的控制中心。使用它可以控制应用程序的执行,暂停、继续执行或终止应用程序,或者单步跳入或单步跳过代码。

“调试”视图提供下列调试命令,这些命令位于“调试”视图的工具栏中(从左到右显示):


按钮/命令
 说明
 
删除所有终止的启动
 清除所有已终止的调试会话。
 
继续
 继续执行已暂停的应用程序。
 
暂停
 暂停应用程序以便检查代码、单步跳入代码等。
 
终止
 终止调试会话。
 
断开连接
 在进行远程调试时断开调试器的连接。
 
单步跳入
 进入调用的函数并在该函数的第一行停止。
 
单步跳过
 执行函数的当前行,然后在该函数的下一行停止。
 
跳出
 继续执行,直到当前函数已返回到其调用者。
 
拖放至帧
 Flash Builder 中不支持此命令。
 
使用单步执行过滤器
 Flash Builder 中不支持此命令。
 

使用“控制台”视图
“控制台”视图显示 ActionScript 代码中放置的跟踪语句的输出以及来自调试器自身的反馈(状态、警告、错误等)。

“控制台”视图提供下列命令,这些命令位于“控制台”视图的工具栏中(从左到右显示):

按钮/命令
 说明
 
终止
 终止调试会话。
 
删除启动
 清除所有已启动的调试会话。
 
删除所有终止的启动
 清除所有已终止的调试会话。
 
清除控制台
 清除“控制台”视图中的所有内容。
 
滚动锁定
 防止“控制台”视图滚动。
 
标准输出发生更改时显示控制台
 写入到标准输出中时显示控制台
 
标准错误发生更改时显示控制台
 写入到标准错误中时显示控制台
 
锁定控制台
 防止在选择其它进程时控制台刷新其内容。
 
显示选择的控制台
 显示选择的控制台
 
打开控制台
 打开新控制台并显示弹出菜单,以选择其它控制台视图。
 

在“变量”视图中管理变量
“变量”视图显示当前所选堆栈帧在“调试”视图中定义的变量。简单变量(名称和值)显示在同一行上。随变量一起显示的图标提供有关该变量类型的可视提示。

复杂变量可以展开以显示其成员。可使用“变量”视图观察变量(通过将变量添加到“表达式”视图),也可以在调试会话期间使用“变量”视图修改变量值。还可以在“变量”视图中设置观察点,如使用观察点中所述。

所有超类成员都组合在一个单独的树节点中;默认情况下仅显示当前类的成员。这将有助于减少“变量”视图中一次显示过多变量的情况。

“变量”视图提供下列操作命令,这些命令位于“变量”视图工具栏中(从左到右显示):


命令
 说明
 
显示类型名
 显示变量的类型名称。
 
显示逻辑结构
 Flash Builder 中不支持此命令。
 
全部折叠
 折叠“变量”视图。
 

更改变量的值
选择要修改的变量。

右键单击(在 Macintosh 中为按住 Control 键并单击)以显示上下文菜单,然后选择“更改值”。

输入新值,然后单击“确定”。

此时变量将包含新值。

修改过的变量显示为红色。

查找变量
 要在“变量”视图中查找变量或变量成员,请选择“变量”视图,然后输入要查找的变量名称。也可以使用通配符 (*) 搜索出现在变量名称中任意位置的词(例如,“*color”)。

“变量”视图中表示变量的图标
“变量”视图使用图标和覆盖为正在显示的变量类型提供可视提示。有关图标及其含义的列表,请参阅表示语言元素的图标。


“变量”视图


使用“表达式”视图
可使用“表达式”视图观察在“变量”视图中选择的变量,并在调试应用程序时添加观察表达式并对其求值。

调试时可以检查并修改所选的要观察的变量的值。还可以添加观察表达式,即要在调试暂停时对其求值的代码表达式。在您单步跳入函数时有些变量可能超出了作用域,因此不会显示在视图中,观察表达式对观察这些变量非常有用。

“表达式”视图提供下列命令,这些命令位于“表达式”视图工具栏中(从左到右显示):

命令
 说明
 
显示类型名
 显示“表达式”视图中的项的对象类型。
 
显示逻辑结构
 Flash Builder 中不支持此命令。
 
全部折叠
 折叠视图中的所有表达式。
 
删除选择的表达式
 删除所选变量或观察表达式。
 
删除所有表达式
 删除“表达式”视图中的所有变量和观察表达式。
 

您还可以在源代码编辑器中将鼠标指针悬停在表达式或变量上,以工具提示的方式查看它们的值。可以右键单击,然后在菜单中选择“观察”,将表达式添加到“表达式”视图。

表达式示例
Flash Builder 调试器支持多种简单表达式和复杂表达式。下表列出了可在调试会话期间对其求值的表达式示例。此列表并未涵盖所有支持的表达式,它仅为可执行特定操作的表达式样例。

支持的表达式示例 表达式
 说明
 
myString.length
 返回字符串的长度。
 
myString.indexOf(
‘@’)
 跟踪“@”字符的索引。
 
"constant string".charAt(0)
 跟踪字符串中特定位置处的字符。支持字符串常量。
 
employees.employee.@name
 employees 是 XML 变量。此类表达式用于调试 E4X 应用程序。
 
x == null
 代表表达式中的值的保留字。
 
user1 === user2
 支持大部分 ActionScript 运算符。
 
MyClass.myStaticFunc()
 被解析为类的函数。
 
this.myMemberFunc()
 使用关键字 this 解析的函数。
 
String.fromCharCode(33)
 字符串实际上是函数,不是类,而 String.fromCharCode 实际上是该函数的动态成员。
 
myStaticFunc()
 仅当 myStaticFunc 在当前作用域链中可见时才可对其求值。
 
myMemberFunc()
 仅当 myMemberFunc 在当前作用域链中可见时才可对其求值。
 
Math.max(1,2,3)
 支持数学函数。
 
mystring.search(/myregex/i)
 支持正则表达式。
 
["my", "literal", "array"]
 创建数组。
 
new MyClass()
 实例化类。
 
"string" + 3
 正确处理字符串加整数。
 
x >>> 2
 支持逻辑移位运算。
 
3.5 + 2
 正确执行算术运算。
 

表达式求值的局限性
表达式求值有下列局限性。

不支持命名空间。

不支持嵌入对象。

不支持关键字 super。

不支持完全限定的类名称。

例如,无法对 mx.controls.Button 求值。

可以引用非限定类名称。例如,可以指定引用 mx.controls.Button 的 Button。

如果类名不明确(不同包中的两个类名称相同),则无法控制将对哪个类求值。但是,您可以指定:

getDefinitionByName("mx.controls.Button")可以对大多数 E4X 表达式求值,但不支持 E4X 过滤器表达式。

例如,无法对 myxml.(@id=='3')) 求值。

无法调用定义为变量的函数。

使用观察点
调试应用程序时,可以在变量的特定实例上设置观察点,以在观察的变量值发生更改时终止执行。由于观察点是针对变量的特定实例设置的,因此无法在代码编辑器中设置观察点。您可以在调试会话期间,在“变量”视图中设置观察点。

设置观察点时,须牢记下列几点:

调试会话结束时,将删除所有观察点。

无法在 getter 上设置观察点,但可以在 getter 的字段上设置观察点。

例如,无法在 width 上设置观察点,但可以在 _width 上设置观察点。

无法在局部变量上设置观察点,但可以在局部变量的成员上设置观察点,如以下代码片段所示。

public class MyClass
{
   // These are fields of a class, so you can set a watchpoint on
   // 'memberInt', and on 'memberButton', and on 'memberButton._width':
   private var memberInt:int = 0;
   private var memberButton:Button = new Button();
 
   public function myFunction():void {
      // You CANNOT set a watchpoint on 'i', because it is local:
      var i:int = 0;
 
      // You CANNOT set a watchpoint on 'someButton', because it is local;
      // but you CAN set a watchpoint on 'someButton._width':
      var someButton:Button = new Button();
 
...
}当对象实例的原始值更改时,因为存在观察点而终止执行。

这不同于在变量值发生更改时,在条件断点中使用表达式来终止执行的情况。

设置观察点
 在调试会话中,可通过以下两种方式设置观察点:
在“变量”视图中,打开变量的上下文菜单,然后选择“切换观察点”。

在 Flash Builder 的“运行”菜单中选择“添加观察点”。

在“添加观察点”对话框中选择要观察的变量。

“变量”视图上将显示一个“铅笔”图标,表示已在该变量上设置了观察点。
注: 如果尝试在 getter 上设置观察点,则 Flash Builder 会打开一个对话框,为观察点建议一个有效变量。如果删除建议的变量,对话框将列出该对象的所有有效变量。
使用“运行至行”
Flash Builder 提供了“运行至行”命令,用于在调试会话期间退出循环。

调试时,您可能发现代码正在执行一个重复了多次的循环。要退出此循环,请使用“运行”菜单中的“运行至行”命令。

 

分享到:
评论
1 楼 smithfox 2011-01-19  
兄弟, 你的文章都写的很好呀!
也欢迎在踩踩我的blog http://www.smithfox.com

相关推荐

Global site tag (gtag.js) - Google Analytics