Script Debugger 是 macOS 平台上功能强大、专业的 AppleScript 集成开发与调试环境。它超越了系统自带的“脚本编辑器”,为开发者提供了完整的项目管理和深度调试工具,是自动化工作流和脚本开发的利器。本文将深入解析其界面、工作流及核心技巧。
一、核心界面与工作区详解
启动 Script Debugger 后,您将看到一个结构清晰、功能分区明确的主界面,主要包含以下几个关键区域:
- 导航器面板(左侧):通常位于窗口左侧,以树状结构或列表形式展示当前打开的所有脚本文件、应用程序字典、或项目包含的资源。您可以在此快速在不同脚本间切换。
- 脚本编辑区(中央):这是核心工作区域,用于编写和编辑 AppleScript 代码。它提供语法高亮、代码折叠、智能补全和实时语法检查。
- 字典浏览器:一个独立但至关重要的窗口(可通过
Shift+Cmd+D打开),以清晰可读的格式展示任何应用程序的 AppleScript 词典,是编写针对特定应用脚本的必备参考。 - 调试器面板(底部):包含多个标签页,如“结果”、“事件日志”、“变量”等。在调试模式下,这里会显示脚本执行后的返回值、记录的所有 Apple Events 以及当前作用域内的变量及其值。
- 工具栏:提供快速访问按钮,如运行、编译、停止、断点切换等。
二、完整操作流程:从创建到导出
1. 创建或打开项目
创建新脚本:
- 方法:点击菜单栏 “文件” > “新建”,或直接使用快捷键
Cmd+N。 - 位置:一个新的、未命名的脚本窗口将在编辑区打开。
打开现有脚本:
- 方法:点击菜单栏 “文件” > “打开…”,或使用快捷键
Cmd+O,然后在文件选择器中定位您的.scpt或.applescript文件。
2. 编写与编译脚本
在脚本编辑区直接输入代码。Script Debugger 会实时进行语法检查。
- 编译:点击工具栏的“编译”按钮(锤子图标)或按
Cmd+K。这将检查语法并将您的代码转换为可执行格式。错误会在问题面板中高亮显示。
3. 运行与调试脚本
运行脚本:
- 方法:点击工具栏的“运行”按钮(三角形图标)或按
Cmd+R。脚本将从头到尾执行一次。 - 查看结果:执行后,底部调试器面板的“结果”标签页会显示脚本的最终返回值。
调试脚本(核心功能):
- 设置断点:在编辑区行号左侧点击,会出现一个红色断点标记。或使用快捷键
Cmd+在当前行切换断点。 - 开始调试:点击工具栏的“调试”按钮(带虫子的三角形)或按
Cmd+Shift+R。脚本会运行并在第一个断点处暂停。 - 单步执行:暂停后,使用调试控制按钮或快捷键:
- 步过 (
F6):执行当前行,不进入子程序。 - 步入 (
F7):如果当前行包含子程序调用,则进入该子程序内部。 - 步出 (
F8):执行完当前子程序剩余部分,并返回到调用处。
- 步过 (
- 检查变量:在底部调试器面板的“变量”标签页中,可以查看和监视所有变量的实时值。
4. 保存与导出最终成果
保存脚本:
- 方法:“文件” > “保存” 或
Cmd+S。您可以选择保存为可编辑的脚本文件(.scpt)或纯文本格式(.applescript)。
导出为应用程序:
- 方法:“文件” > “导出…” 或
Cmd+Shift+S。 - 位置与选项:在导出对话框中,选择“文件格式”为“应用程序”。您可以设置应用程序图标、启动屏幕、运行环境(保持打开/关闭)等选项,然后选择保存位置。
三、常用功能进阶技巧
- 深度字典探索:在字典浏览器中,不仅可查看命令和类,还能对特定条目右键选择“在脚本中插入示例”,快速生成代码框架。
- 事件日志监控:在调试器面板的“事件日志”中,可以查看脚本与应用程序之间发送的所有 Apple Events 的原始数据,对于排查复杂交互问题至关重要。
- 脚本库管理:通过 “脚本” > “库” 菜单,可以加载和管理常用的脚本库,实现代码复用。
- 快速打开字典:在脚本编辑器中,将光标置于某个应用程序对象名(如“Finder”)上,按
Ctrl+Cmd+D可直接打开该应用的字典。 - 使用“Tell”块探测器:当脚本在“tell application … end tell”块内暂停时,变量面板会显示该目标应用的专属属性,方便查看应用状态。
四、常见问题与解决方案
问题1:脚本在 Script Debugger 中运行正常,但导出为应用程序后无法运行。
解决方案:检查导出设置。确保在导出对话框的“选项”中,正确设置了应用程序的“运行模式”(例如,是否需要显示启动屏幕)。更常见的是权限问题,请确保应用程序位于用户有执行权限的目录(如“应用程序”文件夹),并首次运行时在“系统设置-隐私与安全性”中授予执行权限。
问题2:调试时无法看到某些变量的值,或变量面板显示为“<out of scope>”。
解决方案:这表示该变量在当前暂停的执行上下文中不可见(例如,是另一个处理程序内的局部变量)。确保您在正确的执行堆栈帧中。在调试器面板的“调用栈”区域,点击不同的堆栈层级,变量面板的内容会随之变化。
问题3:断点有时会被忽略。
解决方案:首先确认您是以调试模式(Cmd+Shift+R)而非普通运行模式(Cmd+R)启动的脚本。其次,检查断点是否设置在可执行代码行上(注释行、空行上的断点无效)。最后,尝试清理并重新设置断点。
问题4:如何调试“运行脚本”处理程序(由应用程序事件触发)?
解决方案:这需要附加到目标进程进行调试。在 Script Debugger 中,使用 “调试” > “附加到进程…” 菜单,然后选择运行您脚本的应用程序(如 Finder)。之后,当该应用程序触发您的脚本时,Script Debugger 会自动拦截并进入调试状态。
五、快捷键汇总表
| 功能分类 | 操作描述 | Mac 快捷键 |
|---|---|---|
| 文件操作 | 新建脚本 | Cmd + N |
| 打开脚本 | Cmd + O |
|
| 保存脚本 | Cmd + S |
|
| 导出… | Cmd + Shift + S |
|
| 编辑与编译 | 编译脚本 | Cmd + K |
| 显示/隐藏字典浏览器 | Shift + Cmd + D |
|
| 快速打开光标处应用的字典 | Ctrl + Cmd + D |
|
| 运行与调试 | 运行脚本 | Cmd + R |
| 调试脚本(带断点) | Cmd + Shift + R |
|
| 停止执行 | Cmd + . |
|
| 切换断点 | Cmd + |
|
| 单步步过 | F6 |
|
| 单步步入 | F7 |
|
| 调试控制 | 单步步出 | F8 |
| 窗口与视图 | 显示/隐藏调试器面板 | Cmd + 0 |







