【问题标题】:How do I debug AppleScript?如何调试 AppleScript?
【发布时间】:2022-03-19 15:20:31
【问题描述】:

您有哪些调试 AppleScript 的技巧和窍门?有调试器吗?如果不是,插入“打印”以显示变量值的最佳方法是什么?有没有办法“漂亮打印”更复杂的数据结构?

【问题讨论】:

  • 你试过log命令吗?我不知道它什么时候可用。

标签: debugging applescript


【解决方案1】:

最新版本的 xcode 可让您创建 AppleScript 应用程序由于 Apple 已停止支持在 xcode 中调试 AppleScript。

后备:对于简单的“printf 样式”调试,您可以使用:

display dialog "my variable: " & myVar

【讨论】:

    【解决方案2】:
    1. 脚本调试器
    2. XCode
    3. 从脚本编辑器运行时,获取对象的属性(见下文)以了解失败的原因。您还可以使用类词来查看属性是什么类。应用程序的字典是一个很好的起点。

      一种通常会帮助我的技术(我有时仍然会这样做)是告诉一些东西来返回它们的属性,如下所示:

      tell application "TextEdit"
        get properties
      end tell
      
    4. 日志语句和 Console.app,用于调试运行时事件。 (下文详述)。您当然可以通过设置属性来打开和关闭调试

      下面是我用来跟踪运行时错误、小程序、邮件规则以及你有什么的技术。失败时,错误号和信息会记录到TestDrive.log中,可以在Console.app的左边找到...

      tell application "TextEdit"
          try
              set a to text 0 of its name
          on error e number n
              my logit("OOPs: " & e & " " & n, "TestDrive")
          end try
      end tell
      
      to logit(log_string, log_file)
          do shell script ¬
              "echo `date '+%Y-%m-%d %T: '`\"" & log_string & ¬
              "\" >> $HOME/Library/Logs/" & log_file & ".log"
      end logit
      

    【讨论】:

    • get propertiesMail (AppleEvent handler failed." number -10000) 失败,所以它似乎不是通用的,是否有更通用的变体来检索应用程序的脚本功能?跨度>
    【解决方案3】:

    如果您要构建任意数量的 AppleScript,ScriptDebugger 是我推荐的最佳工具。说了这么多……

    Xcode 是一个免费选项,可用于开发 AppleScript,并可以使用调试器逐步执行代码。该功能主要包含在内,因此您可以使用 AppleScript Studio 构建 Cocoa 应用程序,但您可以将其用于任何 AppleScript 开发。

    如果您正在寻找更简单的东西,您可以查看Smile,它并不是真正的调试器,但确实提供了标准脚本编辑器中没有的对调试有用的功能。

    【讨论】:

    【解决方案4】:

    如果显示对话框太小,您可以使用 TextEdit 显示大返回​​:

    tell application "TextEdit"
        activate
        make new document
        set text of document 1 to myResults
    end tell
    

    来源http://forums.macrumors.com/showthread.php?t=446171

    【讨论】:

      【解决方案5】:

      要获取窗口名称和其他 GUI 元素和属性,我发现 UI Browser 非常宝贵。您可以使用它来检查您想要使用 AppleScript 控制的任何内容,以找到您想要控制的元素的名称

      不是免费的,但对于认真的开发人员来说很值得。

      【讨论】:

        【解决方案6】:

        使用log 命令。示例:

        log "Hello world!"
        

        然后可以在官方编辑器的“消息”窗口中看到输出。

        Reference

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-18
          • 2014-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多