Come configurare la raccolta dei dump di Firebird su Windows
In breve, ci sono 3 passaggi:
-
Se hai installato Firebird con l’opzione Guardian, disabilita Firebird Guardian - imposta il suo servizio su Disable e cambia Firebird Server da manuale ad automatico.
-
Imposta in firebird.conf il parametro BugCheckAbort=1 (e decommentalo, se necessario), quindi riavvia Firebird per applicare la modifica.
-
Configura e verifica la raccolta dei dump per l’eseguibile di Firebird in Windows Error Reporting (WER)
Importante!
Assicurati di avere i file con le informazioni di debug (estensione *.pdb) nella cartella di Firebird. La distribuzione HQbird Enterprise include già questi file, mentre per la community Firebird questi file possono essere scaricati dalla pagina di download di Firebird - usa il link di download con “debug”.
I seguenti file pdb devono essere inseriti:
per Firebird 2.5.x:
fbclient.pdb, fbembed.pdb, fbserver.pdb, fb_inet_server.pdb - nella cartella bin\ di Firebird
per Firebird 3.x e Firebird 4.x:
fbclient.pdb e firebird.pdb - nella cartella principale di Firebird;
engine12.pdb (per 3.x) e engine13.pdb (per 4.x) - nella cartella plugins\
Configurazione di WER
File reg pronti all’uso
Abilita WER
Disabilita WER
Di seguito la descrizione dettagliata di cosa fare per configurarlo manualmente:
Per configurare WER, trova nel registro la seguente chiave
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
e apri le sue sottochiavi.
Evidenzia " Windows Error Reporting" e assicurati che esista un parametro con il nome Disabled, tipo REG_DWORD, e il cui valore sia 0.
Aprilo.
Nota! Non confondere questa chiave con HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (senza Windows dopo Microsoft\).
Nella chiave
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
crea (o imposta, se già creato) il parametro:
nome: DontShowUI
tipo: DWORD
valore: 1
Quindi, nella chiave aperta
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
trova la sottochiave LocalDumps; creala, se non esiste.
Poi apri HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.
WER consente di specificare impostazioni comuni e locali (private).
In generale, abbiamo bisogno dei dump per tutti i processi.
Per questo, crea i parametri nella sottochiave LocalDumps:
- DumpFolder, REG_EXPAND_SZ, - nome della cartella in cui salvare i dump. Deve avere spazio libero sufficiente (~2 volte la RAM del server se stai eseguendo SuperServer o SuperClassic). Inoltre, gli account utilizzati per eseguire i servizi di cui fare il dump devono avere i permessi per questa cartella (ecco perché una posizione di rete può essere una scelta sbagliata, poiché l’account LocalSystem, utilizzato da Firebird, non ha i diritti per accedere a posizioni remote).
- DumpCount, REG_DWORD, - numero massimo di file di dump (i dump verranno ruotati dopo aver raggiunto questo numero), imposta 2 o più
- DumpType, REG_DWORD, - tipo di dump, deve essere 2.
Quando si verifica un crash, il file di dump verrà creato nella cartella configurata in DumpFolder!
Maggiori dettagli sulla configurazione di 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
Come verificare la creazione del dump (solo quando non ci sono utenti reali connessi!)
Per testare la raccolta dei dump, dobbiamo provocare un crash di Firebird: scarica /download/killudf/badudf.dll.7z
decomprimi e metti badudf.dll nella cartella UDF ( non dimenticare di rimuoverlo dopo il test!) e poi esegui il seguente file 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
Contattaci
Se stai riscontrando crash di Firebird o altri comportamenti anomali, contattaci: [email protected]