2009-09-23 11 views
38

¿Qué consejos y trucos tiene para depurar AppleScript? Hay un depurador? Si no, ¿cuál es la mejor manera de insertar "impresiones" para mostrar el valor de las variables? ¿Hay alguna manera de "imprimir bastante" estructuras de datos más complicadas?¿Cómo debo depurar AppleScript?

Respuesta

16
  1. Script Debugger
  2. XCode
  3. Obtener las propiedades de un objeto (ver a continuación) para comprender por qué falla, cuando se ejecuta desde el editor de scripts. También puede usar la palabra de la clase para ver qué clase es una propiedad. El Diccionario de una aplicación es un buen punto de partida.

    Una técnica que a menudo se yo, (y que todavía hago a veces) han ayudado es a decir algo para volver a sus propiedades, así:

    tell application "TextEdit" 
        get properties 
    end tell 
    
  4. declaraciones de registro y Console.app, para la depuración de eventos de tiempo de ejecución. (más abajo). Por supuesto, puede activar y desactivar la depuración configurando una propiedad

    A continuación se muestra una técnica que uso para rastrear errores de tiempo de ejecución, en applets, reglas de correo y qué es lo que tiene. Cuando falla, el número de error y el mensaje se registra en TestDrive.log, y se pueden encontrar en el margen izquierdo de 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 
    
+0

'get properties' falla para ** Mail ** (' AppleEvent handler failed. "Number -10000') por lo que lo hace no parece ser genérico, ¿hay una variante más genérica para recuperar las capacidades de scripting de las aplicaciones? – dualed

2
+4

$ 199! ¡Ay! Eso es demasiado caro para alguien (como yo) que escribe el guión corto ocasional (y luego olvida todo sobre AppleScript en las semanas que pasan hasta la próxima). –

+0

FWIW ahora cuesta $ 99. –

9

Si usted está construyendo cualquier cantidad de AppleScripts, ScriptDebugger es la mejor herramienta que puedo recomendar. Habiendo dicho eso ...

Xcode es una opción gratuita que se puede utilizar para desarrollar AppleScripts y puede pasar el código con el depurador. La capacidad se incluye principalmente para que pueda construir aplicaciones Cocoa con AppleScript Studio, pero podría usarla para cualquier desarrollo de AppleScript.

Si está buscando algo más simple, puede consultar Smile, que no es realmente un depurador, pero ofrece características útiles para la depuración que no están disponibles en el Editor de secuencias de comandos estándar.

+0

Parece que Xcode 4 ha eliminado el depurador de scripts - http://stackoverflow.com/a/5535604/255961 – studgeek

48

Por "estilo printf" muy simple depuración necesidades, intente

display dialog "my variable: " & myVar 
6

Si un diálogo sobre la pantalla es demasiado pequeña puede utilizar TextEdit para mostrar grandes beneficios:

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

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