首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

运用 FlashBuilder4 的 DEBUG 界面调试程序

2012-11-09 
使用 FlashBuilder4 的 DEBUG 界面调试程序启动调试会话添加和删除断点设置条件断点在“断点”视图中管理断

使用 FlashBuilder4 的 DEBUG 界面调试程序

    启动调试会话添加和删除断点设置条件断点在“断点”视图中管理断点在“调试”视图中管理调试会话使用“控制台”视图在“变量”视图中管理变量更改变量的值查找变量“变量”视图中表示变量的图标使用“表达式”视图表达式示例表达式求值的局限性使用观察点使用“运行至行”

?

?

?

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

有关 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

热点排行