SIGSEGV
, SIGBUS
ve benzeri gibi önemli hataları yakalamak için bir Objective-C uygulamasında sinyal işleyicileri kullanıyorum.Xcode: GDB ve sinyal işleyicileri
Böyle bir sinyal ortaya çıktığında, bir backtrace ve hatayla ilgili ayrıntılar içeren bir log dosyası yazıyorum (Biliyorum, reentrancy sorunlarına sahip olabileceğimi biliyorum, fakat bu nokta değil).
Bu sayede bir sonraki açılışta uygulamanın çöktüğünü biliyorum ve kullanıcıya bir hata raporu doldurmak isteyip istemediğini sorabilirim.
Uygulamayı manuel olarak başlattığımda iyi çalışıyor.
Ancak Xcode'dan (GDB ile) çalıştırdığımda sinyal işleyicileri aranmaz.
signal
veya sigaction
ile ayarlamaya çalışıyorum ama fark yok.
info signals
ile de kontrol ettim, bu sinyaller pass
'e ayarlandı, yani uygulamaya geçirilmesi gerekiyordu.
Bu benim için büyük bir sorun değil, sadece bu sorunu uyguladığım hata ayıklaması yaparken aldım, ancak GDB ile de çalışmak çok güzel olacak.
Böyle bir sorunu yaşandı ve çözdü mü?
Bu sinyalleri gdb cinsinden nostop'a ayarlamayı denemek isteyebilirsiniz, böylece uygulamanız tarafından yönetilir. – steve
Soruyu sormadan önce bunu denedim, ama sanırım işe yaramadı çünkü bir hata yaptım. Bugün tekrar denedim ve çekicilik gibi çalışıyor. Bir cevabı bununla doldurmak isteyebilirsiniz, bu yüzden kabul edebilirim. Teşekkürler :) – Macmade