Mencoba masuk ke kode AFNetworking menghasilkan peringatan berikut:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
Dan tentu saja saya tidak dapat men-debug kode. Untuk lebih spesifik saya mencoba men-debug UIImageView+AFNetworking
kategori yang tampaknya tidak mungkin. Mengubah kode tidak berpengaruh (dicoba NSLog
, dll) dan ketika mencoba melangkah dalam kompiler pergi ke kode assembly dan ditampilkan UIImageView+TVASTAFNetworking
sebagai nama kategori yang tidak ada di mana pun di basis kode.
Menggunakan Xcode 7. iOS 9 & 8. Cocoapods (tanpa Kerangka)
PEMBARUAN
Saya lupa menyebutkan bahwa Pengoptimal diatur untuk none
konfigurasi rilis dan debug dan saya sebenarnya menggunakan Debug
konfigurasi.
PEMBARUAN 2
Strip Debug Symbols
Tidak aktif juga.
ios
afnetworking-2
xcode7
Mojtaba
sumber
sumber
Strip Debug Symbols
tidak aktif.Jawaban:
Jika proyek Anda menggunakan Swift, ada dua pengaturan "Level Optimasi" yang terpisah dalam konfigurasi proyek / target.
Pastikan Anda mengatur keduanya dengan benar:
None [-O0]
untuk LLVM danNone [-0none]
untuk Swift) untuk konfigurasi build yang dimaksud.Melakukan ini menyelesaikan peringatan itu untuk saya.
sumber
po
,p
,expr
...?Sepertinya proyek Anda dalam mode Rilis. Mode rilis mengkompilasi aplikasi dengan banyak optimisasi, tetapi para debugger membenci optimisasi, sehingga untuk debug aplikasi yang andal, Anda perlu mengubahnya ke mode Debug yang mengurangi optimisasi dan menambahkan banyak informasi debug. Untuk beralih ke mode Debug:
sumber
Peringatan ini hanya muncul ketika Anda menekan breakpoint dan sumbernya ada dalam proyek di mana optimasi diaktifkan, mencegah Anda menonton nilai variabel nyata (setiap objek ditampilkan nihil, meskipun tidak)
Dalam kasus saya, itu hanya terjadi ketika debugging langkah demi langkah melalui ketergantungan cocoapod.
Jadi, bahkan jika Anda memiliki target utama dan pengaturan proyek yang Anda atur dengan benar (Strip Debug Symbol = OFF, dan Level Optimasi Tidak Ada), Anda perlu memastikan itu sama untuk proyek Pod tempat Anda memukul breakpoint.
sumber
None [-O0]
)pod install
lagi. Ubah seperti ini .Ternyata setelah mengimpor proyek lama (Xcode 7.x +) ke Xcode 8.3 baru (8E162), mungkin karena optimisasi kompiler, Swift Compiler - Level Optimasi ditetapkan secara default ke Fast, Single-File Optimization :
Mengubahnya menjadi tidak ada, menyelesaikan masalah:
sumber
Editor
->Validate Settings
lalu konfirmasikan semua perubahan. Maka Anda harus mendapatkanSetel Debug ke
None
.sumber
Ini solusi bagi saya ...
Di sepanjang baris jawaban gimino, jika Anda menggunakan cocoapods, tambahkan baris seperti ini ke Podfile:
atau untuk versi cocoapods> = 1.0 (terima kasih Diejmon)
Di mana MyProject memiliki 'Debug - local', 'Debug - staging', 'Debug - PRODUCTION' sebagai konfigurasi debug selain dari standar 'Debug'
Secara default, cocoapods biasanya akan menghasilkan konfigurasi pod sebagai Release, baris Podfile ini memungkinkan Anda untuk mengatakan bahwa itu debug.
sumber
Saya mengalami masalah yang sama hari ini, dan menemukan jawabannya (setidaknya dalam kasus saya). Saya juga menggunakan CocoaPods, dan saya mengalami masalah ini ketika menjalankan target pengujian saya (Swift bercampur dengan ObjC).
Saya menggunakan Xcode 7.2, dengan iOS 9.2 SDK.
Pada gambar di bawah ini, Anda dapat melihat optimasi untuk target dan proyek sebelum perubahan saya:
Hal yang mengejutkan adalah bahwa meskipun Optimization diselesaikan adalah None [O0] , hanya setelah mengubah pengaturan proyek dari Os ke O0 melakukan halte compiler mengoptimalkan target.
Di bawah ini Anda dapat melihat pengaturan terakhir saya:
sumber
Sudah lama tapi saya akhirnya memecahkan masalah ini. Ada bendera optimasi ketiga
LTO
atauLink Time Optimization
dan Anehnya tidak ada yang menyebutkannya di sini dan karena alasan tertentu saya juga tidak memperhatikannya. Itu ada di sana di atasOptimization Level
pengaturan seperti yang Anda lihat dalam banyak tangkapan layar yang diposting di sini.Jadi untuk meringkasnya ada 3 flag optimasi yang berbeda yang ingin Anda matikan untuk debugging:
-flto
)-O
)Informasi lebih lanjut tentang KPP: http://llvm.org/docs/LinkTimeOptimization.html
sumber
Jika Anda perlu menonaktifkan optimisasi untuk pod Swift Anda sehingga Anda dapat melakukan debug ke dalamnya, tambahkan berikut ini ke
Podfile
. Ini akan menonaktifkan optimisasi untuk debug build saja.sumber
Apakah Anda yakin konfigurasi debug Anda tidak mengoptimalkan kode (tidak seharusnya)? Sepertinya Anda tidak sengaja mengaktifkan optimasi untuk konfigurasi debug dan Anda harus mematikannya dari pengaturan target.
sumber
Kesalahan ini terjadi pada saya dua kali, dan dalam setiap kasus ada kesalahan dalam parameter URL yang digunakan untuk meminta layanan. Dalam satu kasus URL memiliki beberapa ruang di bagian port di kasus lain beberapa Nilai Opsional tidak dibuka.
Jadi perbaikannya adalah untuk memastikan url untuk permintaan terbentuk dengan baik. Informasi lebih lanjut tentang kasus saya, dan pelaporan serupa sama di sini .
sumber
Yang saya lakukan adalah Bersihkan (
Product > Clean
) proyek saya dan jalankan lagisumber
Ini mungkin penyederhanaan yang berlebihan, tetapi apakah Anda membuat rilis atau dengan optimasi (yang menghilangkan simbol dari Swift atau LLVM) terlalu tinggi? Jika demikian edit skema Anda dan alihkan ke Debug, atau edit Pengaturan Bangun Anda untuk optimasi cepat atau LLVM ke Tidak Ada (0).
sumber
Hanya dalam kasus seseorang menghadapi masalah ini saat men-debug pod yang menggunakan pustaka C secara internal, ada hal lain yang harus Anda ubah dalam pengaturan proyek untuk membuatnya bekerja selain semua yang lain yang tercantum dalam utas.
Buka pengaturan proyek Pods -> Target penggunaan-C Anda -> Bangun Pengaturan -> Apple Clang - Bendera Kompiler Kustom -> Bendera C lainnya dan hapus
-O3
bendera yang ada di sana.sumber