Linux üzerinde Firebird için dökümler nasıl toplanır ve yığın izleri nasıl oluşturulur
Giriş
Firebird ile askıda kalma veya anormal sonlanma gibi ciddi bir sorun durumunda, dump toplamayı yapılandırmak ve ardından yığın izleri (stack traces) oluşturmak gerekir. Dump ve yığın izleri sayesinde, IBSurgeon’un Firebird çekirdek geliştiricileri askıda kalma/hata durumunun ayrıntılı resmini analiz edebilir ve çözüm sunabilir.
| Dump ve yığın izi analizi, IBSurgeon’dan gelişmiş Firebird teknik destek hizmetinin bir parçası olarak sunulmaktadır. Planlarımız sunucu/aylık USD199’dan başlar ve sohbet (WhatsApp, Telegram vb.) üzerinden destek içerir; böylece ciddi bir sorun durumunda neredeyse anında profesyonel yardım alırsınız. Ayrıntılar için ziyaret edin: /tr/enterprise-subscription-plans-for-firebird/ |
| Aşağıdaki tüm işlemler root veya sudoer yetkisi gerektirir. |
1. Ön Koşullar
1.1 Müdahale Eden Paketleri Silme veya Durdurma
Ubuntu/Debian
- systemd-coredump
apt-get purge --auto-remove systemd-coredumpSilme işlemini doğrulamak için:
cat /proc/sys/kernel/core_patternAşağıdaki gibi bir çıktı olmamalıdır:
/lib/systemd/systemd-coredump%P %u %g %s %t %e- apport
# Arama
service --status-all | grep -m1 -i apport
# Deneme silme
apt-get -s remove apport
# Silme
sudo apt-get remove apport
# Kalan dosyaları temizleme
sudo apt-get purge apportCentOS/RedHat
- abrtd
Kontrol etmek için:
cat /proc/sys/kernel/core_patternAşağıdaki gibi bir çıktı görürseniz:
/usr/libexec/abrt-hook-ccpp %s %c %p %u %g%t e %P %Iabrtd’yi durdurun ve silin:
CentOS 6 için:
service abrtd stopCentOS 7 için:
systemctl disable abrtd.serviceKaldırma:
yum -y remove abrt*
# Kalan dosyaları temizleme
rm -r /var/cache/abrt/
# Temizliği doğrulama
cat /var/log/yum.log | grep abrt1.2 GDB Kurulumu
| Toplanan dump’lardan yığın izleri oluşturmak için GDB gereklidir. GDB kurulumu performansı etkilemez veya Firebird’ü “hata ayıklama” moduna geçirmez. |
CentOS için:
yum install gdbUbuntu/Debian için:
apt-get install gdb2. Dump Boyutu Sınırlamalarını Kaldırma
Geçerli dump boyutu sınırını kontrol edin:
ulimit -c0 görürseniz, dump oluşturma yasaktır.
systemd kullanan sistemler için servis dosyasını değiştirin:
CentOS/RedHat
/usr/lib/systemd/system/firebird-superserver.serviceUbuntu/Debian
/lib/systemd/system/firebird-superserver.service[Service] bölümüne ekleyin:
LimitCORE=infinityServisleri yeniden başlatın:
systemctl daemon-reload
systemctl restart firebird-superserver.serviceSınırsız dump boyutunu doğrulayın:
strings /proc/$(pgrep firebird)/limits3. Dump Dosya Konumu ve Adlandırmayı Yapılandırma
| Bu adım isteğe bağlıdır ancak anlamlı dump dosya adları belirlemek ve yeterli depolama alanı sağlamak için önerilir. |
Geçici Yapılandırma
sysctl -w kernel.core_pattern=/path/to/dumps/core.%e.%t.%pKalıcı Yapılandırma
/etc/sysctl.conf dosyasına ekleyin:
kernel.core_pattern=/path/to/dumps/core.%e.%t.%pSahiplik Ayarlama
chown firebird /path/to/dumps -R4. Dump Toplamayı Test Etme
Ön Koşullar
-
SSH’yi yeniden başlatın
-
ulimit -ckomutunun “unlimited” döndürdüğünü doğrulayın
Test Çökme Komutları
Firebird 3+ (SuperServer veya SuperClassic)
echo "shell kill -6 $(pgrep firebird);" | /opt/firebird/bin/isql -q localhost:employee -user sysdba -pas masterkeyFirebird 2.5 (SuperClassic)
echo "shell kill -6 $(pgrep fb_smp_server);" | /opt/firebird/bin/isql -q localhost:employee -user sysdba -pas masterkeyClassic Mod
select mon$server_pid from mon$attachments where mon$attachment_id = current_connection;
shell kill -6 <bulunan_PID>;5. Hata Ayıklama Dosyalarını Kurma
| - Hata ayıklama dosyaları Firebird derleme sürümünüzle eşleşmelidir - Hata ayıklama dosyalarını kurmak performansı etkilemez - Firebird güncellerken hata ayıklama dosyalarını da güncelleyin |
Beklenen hata ayıklama dosya konumları:
/opt/firebird/bin/.debug/firebird.debug
/opt/firebird/bin/.debug/gbak.debug
/opt/firebird/bin/.debug/isql.debug
/opt/firebird/lib/.debug/libfbclient.so.3.0.11.debug
/opt/firebird/lib/.debug/libib_util.so.debug
/opt/firebird/plugins/.debug/libfbtrace.so.debug
/opt/firebird/plugins/.debug/libEngine12.so.debug| HQbird kurulumları doğru hata ayıklama dosyalarını içerir ve güncellemeleri otomatik olarak yönetir. |
6. Çalışan Süreçlerden Yığın İzleri Oluşturma
gdb-commands.txtdosyasını oluşturun:
thread apply all bt
quit
yes- Yığın izini oluşturun:
gdb -q -x ./gdb-commands.txt /opt/firebird/bin/firebird $(pgrep firebird) 1>./stacktrace.txt 2>&17. Çalışan Süreçten Dump Oluşturma
gcore -o /path/to/dumps/firebirdprefix $(pgrep firebird)| Araç, öneke işlem kimliğini ekleyecektir. |
8. Mevcut Dump’tan Yığın İzi Oluşturma
gdb -q -x ./gdb-commands.txt /opt/firebird/bin/firebird /tmp/core.firebird.23041 1>./stacktrace1.txt 2>&19. Derin Dump Analizi
Paylaşılan kitaplıkları analiz etmek için:
echo -e "info sharedlibrary\nquit\n" | gdb