Xcode menunjukkan kesalahan ketika mencoba untuk mencetak objek po <objectName>
, tetapi hanya untuk satu proyek.
galat: Tidak dapat mematerialisasi struct: ukuran variabel <varName> tidak setuju dengan ukuran ValueObject yang Galat dalam Menjalankan, tidak dapat MempersiapkanToExecuteJITExpression
Xcode debugger juga menunjukkan SEMUA objek sebagai nil
( self
dikecualikan), ketika mereka tidak ( NSLog
menampilkan output yang benar, seperti yang terlihat pada gambar). Saya tidak tahu apa yang salah dengan proyek ini. Setiap proyek lainnya berfungsi dengan baik.
Tahu apa itu? (Membersihkan proyek tidak berpengaruh.)
ios
objective-c
xcode
debugging
Binarian
sumber
sumber
NSString
dibuat satu baris di atas breakpoint!Jawaban:
Apakah Anda yakin tidak dalam "mode rilis"?
Jika Anda ingin melihat nilai variabel Anda harus berada di "Mode debug" (klik pada nama proyek Anda di sudut kiri atas dekat tombol start / stop, lalu "Edit skema ...", lalu "Jalankan" pengaturan, lalu " Tab Info ", lalu" Build Configuration ". Di sini atur" Debug ". Jika berada di" Release "maka yang Anda lihat semua nol).
sumber
debug configuration
?Build Settings
, properti penyebaranStrip debug symbols during copy
diatur ke YA.Strip debug symbols during copy
keNO
danOptimization Level
keNone -O0
dalam proyekBuild Settings
Saya telah menetapkan "Tingkat Optimasi" untuk konfigurasi Debug ke "Tidak Ada" dan ini memecahkan masalah.
sumber
Fastest, Smallest[-Os]
dan itu berhasil.Pastikan bahwa Sanitizer Alamat dimatikan dalam pengaturan Skema Anda. Address Sanitizer tidak berfungsi dengan baik dengan debugger.
sumber
Sepertinya setiap orang punya solusi sendiri.
Bagi saya, saya menggunakan
Objective-C
danSwift
pada saat yang sama.Pertama-tama, buka
TARGETS -> Build Settings
dan caricode generation
Anda akan menemukan
Apple LLVM 6.0
danSwift Compiler
Ubah
Optimization Level
semuanya menjadiNone
, lalu Debug, Anda mungkin menemukan nilainya tidaknil
Hebatnya begitu Anda bisa melihat nilainya, Anda memecahkan masalah ini secara permanen, lalu Anda bisa mengubahnya
Optimization Level
seperti semula.sumber
Ada cara lain ini bisa terjadi. Bagi saya itu karena nilai "Other C Flags" ditetapkan ke "-O2", bahkan untuk build debug. Menonaktifkan ini untuk proses debug menyelesaikan masalah.
sumber
Bagi saya, Xcode memfilter output debugger. Pastikan pengaturan output Anda adalah Debugger Output atau All Output
sumber
Saya baru saja mengalami masalah ini dan menemukan bahwa itu karena
Deployment Postprocessing = YES
di Pengaturan Bangun.Mengubah ini untuk
NO
memperbaikinya, seperti terlihat pada tangkapan layar di bawah ini:Versi Xcode: 6.0.1 (6A317) pada OSX 10.9.5
sumber
Saya baru saja mengalami masalah yang sama: Pada satu titik tiba-tiba Xcode debugger mencetak beberapa jenis objek terutama NSStrings sebagai (nol) meskipun mereka diinisialisasi dengan nilai. Dicetak melalui
nilai yang benar untuk objek ditampilkan.
Membingungkan! Memecahkan masalah agak mudah: Saya hanya mematikan Xcode dan menyalakan kembali komputer saya. Setelah saya restart Xcode semuanya berfungsi dengan baik lagi :).
sumber
Pastikan
Link-Time Optimization = No
untuk mode debug di Bangun Pengaturan.sumber
Itu yang saya butuhkan.
sumber
Solusi di sini juga akan memperbaiki bug di mana Anda melihat
error: <EXPR>:1:1: error: use of unresolved identifier
setiap kali Anda mencobapo
variabel.Bagi saya solusinya adalah pergi ke
Build Settings
dan mencariOptimization Level
dan memastikan setiapDebug
pengaturan diatur keNone
.sumber
Pergi ke "Other C Flags" di pengaturan build dan atur nilai debug dari -o2 ke -O0
sumber
Saya telah mengalami ini juga dan ketika saya menemukan saya dalam mode rilis saya beralih ke debug ... tidak ada perbaikan. Ternyata saya harus melakukan bersih dulu (cmd + shift + k).
Jadi saya pikir apa yang terjadi adalah bahwa setelah dibangun dalam mode rilis tidak semuanya dikompilasi ulang dalam pengembangan dan lldb tidak dapat membaca simbol dengan benar. Setelah membersihkan dan mengkompilasi ulang di dalam mengembangkan itu bekerja untuk saya.
sumber
Kenyataannya adalah bahwa sistem harus bekerja di luar kotak dan tidak karena tautan ke banyak kuantitas pengaturan yang berbeda, ke titik di mana hal-hal dapat bekerja untuk Anda, atau tidak.
Mengapa sistem tidak selalu memungkinkan untuk melakukan debug ketika dalam mode debug adalah misteri yang hanya dapat dijawab oleh Apple (jika mereka peduli, yang mana saya ragu mereka lakukan).
Lagi pula, perbedaan antara debug / non-debug adalah tabel ekstra dengan metadata yang hanya mengisi ruang memori / disk.
Jika Anda melakukan kompilasi terhadap simulator atau perangkat secara langsung, Anda tidak akan peduli dengan megabyte tambahan itu.
Jadi kita perlu menjalankan loop ekstra untuk hanya melakukan hal yang sangat mendasar dan sederhana yang semua yang saya tahu sejak abad lalu baik-baik saja.
Dan untuk menambahkan, bagi saya apa yang berhasil berubah pada "Debug" Link-Time Optimization dari "Monolithic" menjadi "No" (xcode 8).
sumber