Windows'ta Firebird döküm toplamayı nasıl yapılandırırsınız
Kısaca 3 adım vardır:
-
Firebird’ü Guardian seçeneğiyle kurduysanız, Firebird Guardian’ı devre dışı bırakın - servisini Disable yapın ve Firebird Server’ı manual’den automatic’e değiştirin.
-
firebird.conf dosyasında BugCheckAbort=1 parametresini ayarlayın (gerekirse yorum işaretini kaldırın) ve Firebird’ü yeniden başlatarak uygulayın.
-
Windows Hata Raporlama’da (WER) Firebird yürütülebilir dosyası için döküm toplamayı yapılandırın ve doğrulayın.
Önemli!
Firebird klasöründe hata ayıklama bilgisi içeren dosyaların (*.pdb uzantılı) olduğundan emin olun. HQbird Enterprise dağıtımında bu dosyalar zaten mevcuttur ve topluluk Firebird sürümü için bu dosyalar Firebird indirme sayfasından indirilebilir - “debug” içeren indirme bağlantısını kullanın.
Aşağıdaki pdb dosyaları yerleştirilmelidir:
Firebird 2.5.x için:
fbclient.pdb, fbembed.pdb, fbserver.pdb, fb_inet_server.pdb - Firebird’ün bin\ klasörüne
Firebird 3.x ve Firebird 4.x için:
fbclient.pdb ve firebird.pdb - Firebird’ün kök klasörüne;
engine12.pdb (3.x için) ve engine13.pdb (4.x için) - plugins\ klasörüne
WER Kurulumu
Kullanıma hazır reg dosyaları
WER’i Etkinleştir
WER’i Devre Dışı Bırak
Aşağıda manuel olarak kurulum için yapılması gerekenlerin ayrıntılı açıklaması verilmiştir:
WER’i kurmak için kayıt defterinde şu anahtarı bulun:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
ve alt anahtarlarını açın.
" Windows Error Reporting" öğesini vurgulayın ve Disabled adında, REG_DWORD türünde ve değeri 0 olan bir parametre olduğundan emin olun.
Açın.
Not! Bu anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (Microsoft\‘dan sonra Windows olmadan) ile karıştırmayın.
Şu anahtarda:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
şu parametreyi oluşturun (veya zaten oluşturulmuşsa yalnızca ayarlayın):
ad: DontShowUI
tür: DWORD
değer: 1
Ardından, açılan anahtarda:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
LocalDumps alt anahtarını bulun; yoksa oluşturun.
Ardından HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps öğesini açın.
WER, ortak ve yerel (özel) ayarların belirtilmesine olanak tanır.
Genel olarak, tüm işlemler için dökümlere ihtiyacımız var.
Bunun için LocalDumps alt klasörüne parametreler oluşturun:
- DumpFolder, REG_EXPAND_SZ, - dökümlerin saklanacağı klasör adı. Yeterli boş alana sahip olmalıdır (SuperServer veya SuperClassic çalıştırıyorsanız sunucunun RAM’inin ~2 katı). Ayrıca, dökümü alınacak servisleri çalıştırmak için kullanılan hesapların bu klasör için izinleri olmalıdır (bu nedenle ağ konumu kötü bir seçim olabilir, çünkü Firebird tarafından kullanılan LocalSystem hesabının uzak konumlara erişim hakkı yoktur).
- DumpCount, REG_DWORD, - maksimum döküm dosyası sayısı (dökümler bu sayıya ulaşıldığında döndürülür), 2 veya daha fazla ayarlayın
- DumpType, REG_DWORD, - döküm türü, 2 olmalıdır.
Bir çökme meydana geldiğinde, döküm dosyası DumpFolder’da yapılandırılan klasörde oluşturulacaktır!
WER kurulumu hakkında daha fazla ayrıntı
-
https://docs.microsoft.com/en-us/windows/desktop/wer/wer-settings
-
https://docs.microsoft.com/en-us/windows/desktop/wer/collecting-user-mode-dumps
Döküm oluşturmayı nasıl kontrol edilir (yalnızca gerçek kullanıcılar bağlı değilken!)
Döküm toplamayı test etmek için Firebird çökmesini tetiklememiz gerekiyor: /download/killudf/badudf.dll.7z dosyasını indirin
zip’ten çıkarın ve badudf.dll dosyasını UDF klasörüne koyun ( testten sonra kaldırmayı unutmayın!) ve ardından aşağıdaki cmd dosyasını çalıştırın:
@echo off
setlocal enabledelayedexpansion enableextensions
set fbc=C:\HQBird25.in
set dbnm=%~dp0tmptest.fdb.tmp
set usr=SYSDBA
set psw=masterkey
del !dbnm! 2>nul
echo create database 'localhost:!dbnm!' user '!usr!' password '!psw!'; | "!fbc!\isql.exe" -q -z
(
echo set echo on;
echo declare external function crashme
echo returns int by value
echo entry_point 'crashme' module_name 'badudf';
echo commit;
echo show function;
echo select crashme(^) from rdb$database;
) > %~dp0tmptest.sql.tmp
"!fbc!\isql.exe" localhost:!dbnm! -q -i %~dp0tmptest.sql.tmp -user !usr! -pas !psw!
del !dbnm!
del %~dp0tmptest.sql.tmp
Bize Ulaşın
Firebird çökmeleri veya başka anormal davranışlar yaşıyorsanız, lütfen bizimle iletişime geçin: [email protected]