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-coredump
Silme işlemini doğrulamak için:
cat /proc/sys/kernel/core_pattern
Aş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 apport
CentOS/RedHat
- abrtd
Kontrol etmek için:
cat /proc/sys/kernel/core_pattern
Aşağıdaki gibi bir çıktı görürseniz:
/usr/libexec/abrt-hook-ccpp %s %c %p %u %g%t e %P %I
abrtd’yi durdurun ve silin:
CentOS 6 için:
service abrtd stop
CentOS 7 için:
systemctl disable abrtd.service
Kaldırma:
yum -y remove abrt*
# Kalan dosyaları temizleme
rm -r /var/cache/abrt/
# Temizliği doğrulama
cat /var/log/yum.log | grep abrt
1.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 gdb
Ubuntu/Debian için:
apt-get install gdb
2. Dump Boyutu Sınırlamalarını Kaldırma
Geçerli dump boyutu sınırını kontrol edin:
ulimit -c
0 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.service
Ubuntu/Debian
/lib/systemd/system/firebird-superserver.service
[Service] bölümüne ekleyin:
LimitCORE=infinity
Servisleri yeniden başlatın:
systemctl daemon-reload
systemctl restart firebird-superserver.service
Sınırsız dump boyutunu doğrulayın:
strings /proc/$(pgrep firebird)/limits
3. 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.%p
Kalıcı Yapılandırma
/etc/sysctl.conf dosyasına ekleyin:
kernel.core_pattern=/path/to/dumps/core.%e.%t.%p
Sahiplik Ayarlama
chown firebird /path/to/dumps -R
4. 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 masterkey
Firebird 2.5 (SuperClassic)
echo "shell kill -6 $(pgrep fb_smp_server);" | /opt/firebird/bin/isql -q localhost:employee -user sysdba -pas masterkey
Classic 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>&1
7. Ç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>&1
9. Derin Dump Analizi
Paylaşılan kitaplıkları analiz etmek için:
echo -e "info sharedlibrary\nquit\n" | gdb