1. ホーム
  2. アイオス

[解決済み] 'プロジェクト名'が最適化されてコンパイルされた - ステッピングの動作がおかしい、変数が利用できない可能性がある

2022-04-04 10:54:36

質問

AFNetworkingのコードに踏み込もうとすると、以下のような警告が表示されます。

[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.

そしてもちろん、コードのデバッグもできません。具体的に言うと、私がデバッグしようとしているのは UIImageView+AFNetworking というカテゴリがありますが、これは無理そうです。コードを変更しても効果がありません。 NSLog など)、コンパイラでステップインしようとすると、アセンブリコードに移動して UIImageView+TVASTAFNetworking という、コードベースのどこにも存在しないカテゴリー名で表示されます。

Xcode 7を使用。iOS 9 & 8。Cocoapods(Frameworkなし)。

アップデイト 書き忘れましたが、オプティマイザーは none をリリースとデバッグの両方の構成で使用しています。 Debug のコンフィグを使用します。

アップデイト2

Strip Debug Symbols もオフになっています。

解決方法は?

長くなりましたが、ようやく解決しました。3つ目の最適化フラグがあります。 LTO または Link Time Optimization 意外と誰も 私もなぜか気にしていませんでした。のすぐ上にあります。 Optimization Level の設定は、ここに掲載されている多くのスクリーンショットで見ることができます。

つまり、デバッグのためにオフにしたい最適化フラグが3種類あることを要約すると :

  • LLVM リンクタイム最適化 ( -flto )
  • LLVM最適化レベル ( -O )
  • Swiftコンパイラの最適化レベル

LTOについての詳細です。 http://llvm.org/docs/LinkTimeOptimization.html