2011-09-16 11 views
5

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ü?

+0

Bu sinyalleri gdb cinsinden nostop'a ayarlamayı denemek isteyebilirsiniz, böylece uygulamanız tarafından yönetilir. – steve

+0

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

cevap

1
Sen gdb nostop için bu sinyalleri ayarlamak denemek isteyebilirsiniz

, bu nedenle uygulama tarafından yönetilmektedir.