Jak skonfigurować zbieranie zrzutów Firebird w systemie Windows
Krótko mówiąc, są 3 kroki:
-
Jeśli zainstalowałeś Firebirda z opcją Guardian, wyłącz Firebird Guardian - ustaw jego usługę na Disable, a Firebird Server zmień z ręcznego na automatyczny.
-
Ustaw w firebird.conf parametr BugCheckAbort=1 (i odkomentuj, jeśli to konieczne), a następnie uruchom ponownie Firebirda, aby zastosować zmiany.
-
Skonfiguruj i zweryfikuj zbieranie zrzutów dla pliku wykonywalnego Firebirda w Windows Error Reporting (WER)
Ważne!
Upewnij się, że masz pliki z informacjami debugowania (rozszerzenie *.pdb) w folderze Firebirda. Dystrybucja HQbird Enterprise już zawiera te pliki, a dla społecznościowego Firebirda te pliki można pobrać ze strony pobierania Firebirda - użyj linku do pobrania z “debug”.
Następujące pliki pdb powinny być umieszczone:
dla Firebird 2.5.x:
fbclient.pdb, fbembed.pdb, fbserver.pdb fb_inet_server.pdb - do folderu bin\ Firebirda
dla Firebird 3.x i Firebird 4.x:
fbclient.pdb i firebird.pdb - do głównego folderu Firebirda;
engine12.pdb (dla 3.x) i engine13.pdb (dla 4.x) - do folderu plugins\
Konfiguracja WER
Gotowe do użycia pliki reg
Włącz WER
Wyłącz WER
Poniżej znajduje się szczegółowy opis tego, co należy zrobić, aby skonfigurować to ręcznie:
Aby skonfigurować WER, znajdź w rejestrze następujący klucz
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
i otwórz jego podklucze.
Zaznacz " Windows Error Reporting" i upewnij się, że istnieje parametr o nazwie Disabled, typu REG_DWORD, i jego wartość to 0.
Otwórz go.
Uwaga! Nie myl tego klucza z HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (bez Windows po Microsoft\).
W kluczu
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
utwórz (lub tylko ustaw, jeśli już istnieje) parametr:
nazwa: DontShowUI
typ: DWORD
wartość: 1
Następnie, w otwartym kluczu
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
znajdź podklucz LocalDumps; utwórz go, jeśli nie istnieje.
Następnie otwórz HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.
WER pozwala określić ustawienia wspólne i lokalne (prywatne).
Ogólnie rzecz biorąc, potrzebujemy zrzutów dla wszystkich procesów.
W tym celu utwórz parametry w podfolderze LocalDumps:
- DumpFolder, REG_EXPAND_SZ, - nazwa folderu, w którym będą przechowywane zrzuty. Powinien mieć wystarczająco dużo wolnego miejsca (~2x wielkość pamięci RAM serwera, jeśli używasz SuperServer lub SuperClassic). Ponadto konta używane do uruchamiania usług, które mają być zrzucane, muszą mieć uprawnienia do tego folderu (dlatego lokalizacja sieciowa może być złym wyborem, ponieważ konto LocalSystem, używane przez Firebirda, nie ma praw dostępu do zdalnych lokalizacji).
- DumpCount, REG_DWORD, - maksymalna liczba plików zrzutów (zrzuty będą rotowane po osiągnięciu tej liczby), ustaw 2 lub więcej
- DumpType, REG_DWORD, - typ zrzutu, musi wynosić 2.
Gdy wystąpi awaria, plik zrzutu zostanie utworzony w folderze skonfigurowanym w DumpFolder!
Więcej szczegółów na temat konfiguracji 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 sprawdzić tworzenie zrzutu (tylko gdy żadni rzeczywiści użytkownicy nie są podłączeni!)
Aby przetestować zbieranie zrzutów, musimy sprowokować awarię Firebirda: pobierz /download/killudf/badudf.dll.7z
rozpakuj i umieść badudf.dll w folderze UDF ( nie zapomnij go usunąć po teście!), a następnie uruchom następujący plik 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
Skontaktuj się z nami
Jeśli doświadczasz awarii Firebirda lub innych nietypowych zachowań, skontaktuj się z nami: [email protected]