kullanarak çalışan bir arka planda hata ayıklama Bir daemon olarak çalışan bir yüksek trafik ağı C sunucusu uygulaması geliştiriyorum. Bazı durumlarda, uygulama çöküyor (her zaman çekirdeksiz). SIGSEGV'yi yaratan yeri bulmak için gdb ile çalışan daemon'u nasıl debug edebilirim?gdb
Açıklayıcı notlar:
Ben işlemine eklemek sonra komutunu
takmak kullanarak çalışan sürecine gdb kullanarak takmak için nasıl biliyorum, o durur. Çalıştırırsam "devam et", program çökmezse gdb engellenir. CTRL-C'ye basarsam, işlem çıkıyor ve gdb'yi kolayca çıkaramıyorum.
Yani soru şu: Bir sıkışmış olan gdb olmadan işleme devam etmek için bir yol ancak süreç düşmezse eğer ayırmak mümkün var mı?
değiştirmek denediniz örneğin kokteyli ayarları 'ulimit' komutu? Ve/veya bir hata ayıklama sürümünü mi çalıştırıyorsunuz? Ya da muhtemelen çökme için olası yerleri daraltmak için daha fazla günlüğe kayıt eklemek? –
Tüm olasılıkları denedim. İşlem, bir Ubuntu sunucusunda bir yükseltme hizmeti olarak çalışır ve hizmet başlangıcında belirli bir kullanıcıya ayarlanır. limits.conf, bu kullanıcı için hem dosya hem de çekirdek için sınırsız değer içerir. /etc/sysctl.conf dosyasında fs.suid_dumpable ve kernel.core_uses_pid ayarını yaptım Daha fazla günlük kaydı ekledim ancak yüksek trafikli bir sunucu ve çok fazla çıkış üretiyor. –