先日、Xcodeでアプリ開発をしていると、ビルドが途中で進まなくなり、フリーズしてしまう現象に遭遇しました。今回は、その対処法をまとめておきたいと思います。
なお、本事象は特殊な事例である可能性が高く、ビルドがフリーズした際に必ずしも本投稿にてご紹介している原因でない可能性があります。あらかじめご了承ください。
環境
- MacBook Air M4 (MW0X3JA/A)
- macOS Tahoe 26.4.1(25E253)
- Xcode 26.5 (17F42)
原因
(Claudeと一緒に)原因を調べたところ、Xcodeのビルドシステムである「SWBBuildService」がビルド前にSDKの情報を呼び出すためのclang -vがフリーズしてしまうことらしいです。
対処法
その1:Macを再起動
初めは原因がわからなかったので、Macの再起動をしてみました。
実際効果があり、ビルドが走るようになりました。が、再起動をする際に実行中のアプリを全て閉じなければならず、集中も途切れてしまうため、解決策としてはスマートではありません。
その2:フリーズした際にclangをKill
clangプロセスがフリーズしてしまっているのが原因だと分かったので、次は実際に事象が起こった際にclangプロセスをKillしました。
具体的にはプロセスIDを調べて、ただKillするだけです。
# フリーズしたプロセスのPIDを確認
ps aux | grep "clang -v" | grep -v grep
# 上記コマンドの出力例
JohnAppleseed 57067 0.0 0.1 442034720 16976 ?? S 9:41AM 0:00.06 /Applications/Xcode.app/Contents...
# この結果だとPIDは57067
# タスクをKill
kill -9 <PID>
# (例)kill -9 57067
Xcodeでビルドを実行中にKillすると、急にビルドが動き始めます。(はずです。)
まとめ
clangプロセスがフリーズしていたので、それをKillすれば改善される、と言うお話でした。
フリーズした際に毎回PIDを調べてKillするのは面倒なので、エイリアスを設定してみました。
# 下記のコマンドを実行して登録(~/.zshrcにエイリアス登録)
echo 'alias xcode-unfreeze="ps aux | grep \"clang -v\" | grep -v grep | awk '"'"'{print \$2}'"'"' | xargs kill -9 && echo \"Done! Retry build in Xcode.\""' >> ~/.zshrc
source ~/.zshrc
設定後は、Xcodeでフリーズが発生したら、ターミナルで
xcode-unfreeze
を実行するだけで、自動でKillしてくれるので便利です!
(もし、繰り返し本事象が発生する場合は、ぜひ登録してみてください!)
以上
ご覧いただきありがとうございました!
同様の事象で困っている方の参考になれば幸いです!