调试器
Rhino JavaScript 调试器是一个 GUI 工具,允许调试运行在 Rhino 中的解释型 JavaScript 脚本。请注意,该调试器不能用于调试运行在 Mozilla 浏览器中的 JavaScript 脚本,因为 Rhino 并不是此类环境中使用的引擎。
当前的限制:
- 没有断点菜单
使用 Rhino JavaScript 调试器
Mozilla Rhino JavaScript 引擎包含一个源代码级调试器,用于调试 JavaScript 脚本。该调试器本身是一个 Java 程序,可以通过以下方式运行
java org.mozilla.javascript.tools.debugger.Main [选项] [文件名.js] [脚本参数]
其中,选项与 Shell 的选项相同。
Rhino JavaScript 调试器可以调试在多个线程中运行的脚本,并提供设置和清除断点、控制执行、查看变量以及在当前脚本范围内计算任意 JavaScript 代码的功能。
| 控制台窗口 | 调试器将 System.out、System.in 和 System.err 流重定向到内部 JavaScript 控制台窗口,该窗口提供可编辑的命令行,允许您输入 JavaScript 代码并查看系统输出。控制台窗口会保留您输入命令的历史记录,您可以通过键盘上的上/下箭头键在历史列表中向前或向后移动。 | | 打开脚本 | 您可以选择菜单栏中的 文件->打开 菜单项以加载保存在文件中的 JavaScript 脚本。此操作将显示一个文件选择对话框,提示您选择要加载的脚本的位置。所选文件将被编译并显示在新窗口中。 | | 运行脚本 | 您可以选择菜单栏中的 文件->运行 菜单项以执行保存在文件中的 JavaScript 脚本。此操作将显示一个文件选择对话框,提示您选择要执行的脚本的位置。加载的脚本将在一个新线程中运行,并且在第一条指令时控制权将交给调试器。 |
控制执行
调试器提供以下功能,允许您控制正在调试的脚本的执行:
| 逐步进入 | 如果要按步逐步执行并进入任意函数调用,您可以执行以下任意操作:
- 选择菜单栏中的 调试->逐步进入 菜单项
- 按下工具栏上的 逐步进入 按钮
- 按下键盘上的 F11 键
执行将继续。如果脚本中的当前行包含函数调用,控制将在进入该函数时返回调试器。否则,控制将在当前函数的下一行返回调试器。 |
| 逐步跳过 | 如果要按步跳到当前函数的下一行,您可以执行以下任意操作:
- 选择菜单栏中的 调试->逐步跳过 菜单项
- 按下工具栏上的 逐步跳过 按钮
- 按下键盘上的 F7 键
执行将继续,但控制将在当前函数或顶级脚本的下一行返回调试器。 |
| 逐步退出 | 如果要继续执行直到当前函数返回,您可以执行以下任意操作:
- 选择菜单栏中的 调试->逐步退出 菜单项
- 按下工具栏上的 逐步退出 按钮
- 按下键盘上的 F8 键
执行将继续直到当前函数返回或命中断点。 |
| 继续执行 | 如果要继续执行脚本,您可以执行以下任意操作:
- 选择菜单栏中的 调试->继续执行 菜单项
- 按下工具栏上的 继续执行 按钮
- 按下键盘上的 F5 键
执行将继续直到命中断点或脚本完成。 |
| 中断 | 如果要停止所有正在运行的脚本并将控制交给调试器,您可以执行以下任意操作:
- 选择菜单栏中的 调试->中断 菜单项
- 按下工具栏上的 中断 按钮
- 按下键盘上的 Pause/Break 键 |
| 异常中断 | 如果要在每次 JavaScript 抛出异常时将控制交给调试器,请从菜单栏中选择 调试->异常中断 复选框。每当脚本抛出 JavaScript 异常时,将显示一个消息对话框,并且调试器将在异常被抛出的代码位置获得控制权。 |
| 函数进入中断 | 选择 调试->函数进入中断 后,每次执行进入函数或脚本时控制权都会转交给调试器。 |
| 函数退出中断 | 选择 调试->函数退出中断 后,每次执行即将从函数或脚本返回时控制权都会转交给调试器。 |
| 上下移动堆栈 | 调试器主窗口左下角(可停靠)的窗格中包含一个名为 "Context:" 的组合框,显示当前执行脚本的堆栈。您可以通过选择组合框中的某个条目在堆栈中上下移动。当您选择一个堆栈帧时,变量窗口和监视窗口将更新为该范围内可见变量的名称和值。 |
| 设置和清除断点 | 调试器的主桌面包含显示您正在调试的每个脚本内容的文件窗口。您可以通过执行以下任意操作在脚本中设置断点:
- 将光标放置在要设置断点的行上并右键单击。这将显示一个弹出菜单。选择 设置断点 菜单项。
- 简单地单击您要设置断点的行号。
如果所选行包含可执行代码,则红点将出现在行号旁边,并在该位置设置断点。
您可以通过以下任意操作清除脚本中的断点:
- 将光标放置在要清除断点的行上并右键单击。这将显示一个弹出菜单。选择 清除断点 菜单项。
- 简单地单击红点或要清除断点的行号。
红点将消失,并且该位置的断点将被清除。 |
查看变量
调试器主窗口左下角(可停靠)的窗格包含一个标签页容器,带有 "this" 和 "局部变量" 两个标签。每个窗格包含一个树形表,分别显示当前对象的属性和当前可见的局部变量。
| 当前对象 | 当前对象的属性显示在 this 表中。如果某个属性本身是 JavaScript 对象,则可以展开该属性以查看其子属性。每当控制返回到调试器或当您更改 Context: 窗口中的堆栈位置时,this 表都会更新。 | | 局部变量 | 当前函数的局部变量显示在 局部变量 表中。如果某个变量本身是 JavaScript 对象,则可以展开该变量以查看其子属性。每当控制返回到调试器或当您更改 Context: 窗口中的堆栈位置时,局部变量 表都会更新。 | | 监视窗口 | 您可以在调试器主窗口右下角(可停靠)窗格中的 监视: 表中输入任意 JavaScript 表达式。您输入的表达式将在当前范围内重新计算,并在每次控制返回到调试器或当您更改 Context: 窗口中的堆栈位置时显示其当前值。 | | 评估窗口 | 调试器主窗口右下角(可停靠)窗格中的 评估 窗格包含一个可编辑的命令行,您可以在其中输入任意 JavaScript 代码。代码将在当前堆栈帧的上下文中进行评估。该窗口保存您输入的命令的历史记录。您可以通过按键盘上的上/下箭头键在历史记录中向前或向后移动。 |