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

IBSurgeon kütüphanesi

Windows'ta Firebird döküm toplamayı nasıl yapılandırırsınız

Kısaca 3 adım vardır:

  1. 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.

  2. firebird.conf dosyasında BugCheckAbort=1 parametresini ayarlayın (gerekirse yorum işaretini kaldırın) ve Firebird’ü yeniden başlatarak uygulayın.

  3. 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

/download/dump/wer_fb_on2.reg

WER’i Devre Dışı Bırak

/download/dump/wer_fb_off.reg

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ı

  1. https://docs.microsoft.com/en-us/windows/desktop/wer/wer-settings

  2. 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]