用語集/問題が起きたとき

Spindump

別名: ハングのレポート

結論

spindumpは、Mac上のプロセスが何をしていたかを記録する診断レポートで、固まったり応答しなくなったりしたアプリの調査に使われます。macOSにはspindumpツールが含まれていて、アクティビティモニタでも“その他”メニューから作成できます。

spindumpは、1つのプロセスではなく、システム全体のサンプルのようなものです。どのスレッドが実行中で、どれが待っていたかがわかるので、開発者はアプリが応答しなくなった理由を把握しやすくなります。

Appleは、アクティビティモニタのspindumpを、強制終了した応答しないアプリについてのレポートを作成するものとしています。“その他”メニューにある診断レポートの1つで、ほかに“プロセスのサンプルを収集”と“システム診断”があります。

アクティビティモニタでspindumpを作成する方法

アクティビティモニタのウインドウ上部にあるその他ボタン(3つの点)をクリックし、“spindumpを実行”を選びます。管理者パスワードを求められることがあります。完了するとレポートが開き、保存できます。

レポートに問題が記録されるよう、アプリが固まった後ではなく、固まっている最中に作成しましょう。

spindumpの使い道

アプリの開発元への不具合の報告や、フィードバックアシスタントを通じたAppleへの報告に添付します。レポートには実行中のアプリやプロセスの名前が含まれることがあるので、公開の場で共有する前に内容を確認しましょう。

ターミナルからspindumpを作成する方法

spindumpコマンドはMac上のすべてのプロセスのサンプルを収集するので、rootとして実行する必要があります。プロセスが何をしているかを記録するだけで、止めることはありません。

  1. アプリが固まっている間に、ターミナルを開きます。
  2. sudo spindump Safari -revealを実行します。Safariの部分はアプリ名の一部に置き換えてください。求められたら管理者パスワードを入力します。
  3. サンプルの収集が終わるまで待ちます。デフォルトの長さは10秒です。
  4. 終わるとレポートが/tmpに保存されます。-revealオプションを付けると、Finderで表示されます。

spindumpの読み方

指定したアプリが最初に並び、その後にほかのすべてのプロセスが続きます。各プロセスには、スレッドと、サンプル収集中に見られたコールスタックが表示されます。

  • デフォルトでは、スタックは回数順に並んでいます。84で始まる行は、84回のサンプルで見られたということです。
  • フレームの先頭にある星印(*)は、カーネルのコードを示します。
  • 各スタックのいちばん深いフレームを見ると、そのスレッドが実行中だったか、中断されていたかがわかります。
  • アプリのメインスレッドがほかのプロセスを待って中断されているなら、同じレポートでそのプロセスを見ます。これが、1つのプロセスのサンプルと比べたときの最大の利点です。

spindumpの保存場所

応答しないアプリを強制終了すると、macOSが自動的にレポートを作成し、Appleに送信するよう提案することがあります。こうしたレポートは/Library/Logs/DiagnosticReportsに保存されます。

“アプリケーション > ユーティリティ”にある“コンソール”アプリで閲覧できます。サイドバーの“レポート”の下にある“スピンレポート”と“診断レポート”を見て、レポートを選択すると内容を読めます。

アクティビティモニタから自分で作成したレポートは、完了するとウインドウで開きます。送るためのコピーを残せるよう、閉じる前にそのウインドウからレポートを保存しましょう。

サンプル、spindump、システム診断の使い分け

アクティビティモニタの“その他”メニューには、いくつかのレポートがあります。問題に合ったものを選びましょう。spindumpはすべてのプロセスを含むのでサンプルよりずっと大きく、システム診断はさらに時間がかかり、実行前にプライバシーに関する通知が表示されます。開発者にサンプルを求められたらサンプルを、Appleサポートに特定のレポートを求められたらそのレポートを送りましょう。

  • プロセスのサンプルを収集: 1つのプロセスを約3秒間。どのアプリが止まっているか、忙しいかがわかっているときに使います。
  • spindump: Mac上のすべてのプロセス。アプリが固まり、原因がほかのプロセスにあるかもしれないときに使います。
  • システム診断: Mac全体のログから作られる大きなレポートで、通常はAppleサポートから求められたときに使います。

よくある質問

Macのspindumpとは?

プロセスが何をしていたかを記録した診断レポートで、アプリが固まった原因を探るのに使います。アクティビティモニタの“その他”メニューから作成できます。

spindumpとサンプルの違いは?

“プロセスのサンプルを収集”は、選択した1つのプロセスを記録します。spindumpはシステム全体のプロセスを調べるので、固まった原因がアプリの外にある場合に役立ちます。

spindumpがCPUを大量に使うのは普通?

レポートを書き出す間、少しの間CPUを使うことがあります。アプリが固まった後によく起こります。レポートが終われば自然に止まるはずです。

spindumpに管理者パスワードが必要なのはなぜ?

システムプロセスを含め、Mac上のすべてのプロセスのコールスタックを読み取るからです。macOSはそれをrootにしか許可していません。

何も固まっていないときにspindumpを作成できる?

できますが、普段の動作が記録されるだけです。レポートに問題が記録されるよう、アプリが固まっている間に作成しましょう。

アプリを強制終了した後にspindumpが現れたのはなぜ?

macOSは、応答しないアプリが強制終了されたときに何をしていたかを、spindumpを使って記録します。“Appleに送信”のダイアログが送信を提案しているのは、そのレポートです。

関連項目

アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。