Jak nakonfigurovat sběr dumpů Firebird v systému Windows
Stručně řečeno, postup má 3 kroky:
-
Pokud máte Firebird nainstalovaný s volbou Guardian, zakažte Firebird Guardian - nastavte jeho službu na Disable a změňte Firebird Server z manuálního na automatický.
-
Nastavte v firebird.conf parametr BugCheckAbort=1 (a v případě potřeby jej odkomentujte) a restartujte Firebird, aby se změna projevila.
-
Nakonfigurujte a ověřte sběr výpisů (dumpů) pro spustitelný soubor Firebirdu v Windows Error Reporting (WER)
Důležité!
Ujistěte se, že máte v adresáři Firebirdu soubory s ladicími informacemi (přípona *.pdb). Distribuce HQbird Enterprise tyto soubory již obsahuje a pro komunitní Firebird lze tyto soubory stáhnout ze stránky pro stažení Firebirdu - použijte odkaz ke stažení s označením „debug“.
Následující soubory pdb by měly být umístěny:
pro Firebird 2.5.x:
fbclient.pdb, fbembed.pdb, fbserver.pdb, fb_inet_server.pdb - do složky bin\ Firebirdu
pro Firebird 3.x a Firebird 4.x:
fbclient.pdb a firebird.pdb - do kořenové složky Firebirdu;
engine12.pdb (pro 3.x) a engine13.pdb (pro 4.x) - do složky plugins\
Nastavení WER
Připravené soubory reg
Povolit WER
Zakázat WER
Níže je podrobný popis toho, co je třeba udělat pro ruční nastavení:
Pro nastavení WER najděte v registru následující klíč
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
a otevřete jeho podklíče.
Zvýrazněte „ Windows Error Reporting“ a ujistěte se, že existuje parametr s názvem Disabled, typ REG_DWORD, a jeho hodnota je 0.
Otevřete jej.
Poznámka! Nezaměňujte tento klíč s HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (bez Windows za Microsoft\).
V klíči
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
vytvořte (nebo pouze nastavte, pokud již existuje) parametr:
název: DontShowUI
typ: DWORD
hodnota: 1
Poté v otevřeném klíči
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
najděte podklíč LocalDumps; vytvořte jej, pokud neexistuje.
Poté otevřete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.
WER umožňuje zadat společná a místní (soukromá) nastavení.
Obecně potřebujeme výpisy pro všechny procesy.
Za tímto účelem vytvořte parametry v podadresáři LocalDumps:
- DumpFolder, REG_EXPAND_SZ, - název složky, kam se mají výpisy ukládat. Měla by mít dostatek volného místa (~2x velikost RAM serveru, pokud používáte SuperServer nebo SuperClassic). Také účty, které se používají ke spouštění služeb, jejichž výpisy se mají vytvářet, musí mít oprávnění pro tuto složku (proto může být síťové umístění špatnou volbou, protože účet LocalSystem, který Firebird používá, nemá práva pro přístup ke vzdáleným umístěním).
- DumpCount, REG_DWORD, - maximální počet souborů výpisů (výpisy se budou po dosažení tohoto počtu rotovat), nastavte 2 nebo více
- DumpType, REG_DWORD, - typ výpisu, musí být 2.
Když dojde k pádu, soubor výpisu bude vytvořen ve složce nakonfigurované v DumpFolder!
Další podrobnosti o nastavení WER
-
https://docs.microsoft.com/en-us/windows/desktop/wer/wer-settings
-
https://docs.microsoft.com/en-us/windows/desktop/wer/collecting-user-mode-dumps
Jak ověřit vytváření výpisů (pouze když nejsou připojeni žádní skuteční uživatelé!)
Pro test sběru výpisů musíme vyvolat pád Firebirdu: stáhněte si /download/killudf/badudf.dll.7z
rozbalte a vložte badudf.dll do složky UDF ( nezapomeňte jej po testu odstranit!) a poté spusťte následující soubor cmd
@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
Kontaktujte nás
Pokud zaznamenáváte pády Firebirdu nebo jiné abnormální chování, kontaktujte nás prosím: [email protected]