Bu sayfa makine çevirisidir. İngilizce orijinalini okuyun. English

IBSurgeon kütüphanesi

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
Code
apt-get purge --auto-remove systemd-coredump

Silme işlemini doğrulamak için:

Code
cat /proc/sys/kernel/core_pattern

Aşağıdaki gibi bir çıktı olmamalıdır:

Code
/lib/systemd/systemd-coredump%P %u %g %s %t %e
  • apport
Code
# 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:

Code
cat /proc/sys/kernel/core_pattern

Aşağıdaki gibi bir çıktı görürseniz:

Code
/usr/libexec/abrt-hook-ccpp %s %c %p %u %g%t e %P %I

abrtd’yi durdurun ve silin:

CentOS 6 için:

Code
service abrtd stop

CentOS 7 için:

Code
systemctl disable abrtd.service

Kaldırma:

Code
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:

Code
yum install gdb

Ubuntu/Debian için:

Code
apt-get install gdb

2. Dump Boyutu Sınırlamalarını Kaldırma

Geçerli dump boyutu sınırını kontrol edin:

Code
ulimit -c

0 görürseniz, dump oluşturma yasaktır.

systemd kullanan sistemler için servis dosyasını değiştirin:

CentOS/RedHat

Code
/usr/lib/systemd/system/firebird-superserver.service

Ubuntu/Debian

Code
/lib/systemd/system/firebird-superserver.service

[Service] bölümüne ekleyin:

Code
LimitCORE=infinity

Servisleri yeniden başlatın:

Code
systemctl daemon-reload
systemctl restart firebird-superserver.service

Sınırsız dump boyutunu doğrulayın:

Code
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

Code
sysctl -w kernel.core_pattern=/path/to/dumps/core.%e.%t.%p

Kalıcı Yapılandırma

/etc/sysctl.conf dosyasına ekleyin:

Code
kernel.core_pattern=/path/to/dumps/core.%e.%t.%p

Sahiplik Ayarlama

Code
chown firebird /path/to/dumps -R

4. Dump Toplamayı Test Etme

Ön Koşullar

  1. SSH’yi yeniden başlatın

  2. ulimit -c komutunun “unlimited” döndürdüğünü doğrulayın

Test Çökme Komutları

Firebird 3+ (SuperServer veya SuperClassic)

Code
echo "shell kill -6 $(pgrep firebird);" | /opt/firebird/bin/isql -q localhost:employee -user sysdba -pas masterkey

Firebird 2.5 (SuperClassic)

Code
echo "shell kill -6 $(pgrep fb_smp_server);" | /opt/firebird/bin/isql -q localhost:employee -user sysdba -pas masterkey

Classic Mod

Code
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ı:

Code
/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

  1. gdb-commands.txt dosyasını oluşturun:
Code
thread apply all bt
quit
yes
  1. Yığın izini oluşturun:
Code
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

Code
gcore -o /path/to/dumps/firebirdprefix $(pgrep firebird)
Araç, öneke işlem kimliğini ekleyecektir.

8. Mevcut Dump’tan Yığın İzi Oluşturma

Code
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:

Code
echo -e "info sharedlibrary\nquit\n" | gdb