OSXのdashboardでコンソールにデバッグ出力を出す方法

Technical Note TN2139: Debugging Dashboard Widgets をよく読むと

When running in Dashboard, alert statements are simply printed to the Console, avoiding any of these issues.

と書かれているではないですか。はじめalertの出力がコンソールに出るっていうのはsafariのdebugメニューの JavaScript Console かと思って、出てこないなーと困っていたら、コンソールというのは標準出力のことでした。
ふつうの状態ではDockの標準出力はどこかに捨てられてしまうので、OSX起動時から動いているDockをkillして、新たにターミナルからDockを起動する必要があります。Dockの親プロセスのWIndowServerが生死を監視しているらしく、Dockが死ぬとすぐにWindowServerがDockを起動しちゃうのでそれより早くDockを起動しなければいけません。

kuma@fav:~% killall Dock && /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock

でkillと起動を行うとうまくターミナルからDockを起動して標準出力を受け取ることができました。
この状態でdashboardの中で alert("log me.") を実行すると、ターミナルに

2007-03-23 20:50:36.092 DashboardClient[2214] jp.gmo.labs.dashboard.pibrowse: log me.

と出力されてすべて解決です!

はじめ DashboardWidgetのデバッグ方法 を読んで、これはIE上での開発と同じくらい辛いなーと思ったのですがこれで少し楽ができます。

あともうひとつデバッグするときに便利なことを発見。
widgetがなんらかの理由で Command+R も受け付けなくなったときには

killall Dock

でDockを終了させると、”ウィジェットを管理”で消して再度入れ直したりしなくても問題が解決できます。


About this entry