Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

Libreria IBSurgeon

Come configurare la raccolta dei dump di Firebird su Windows

In breve, ci sono 3 passaggi:

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

  2. Imposta in firebird.conf il parametro BugCheckAbort=1 (e decommentalo, se necessario), quindi riavvia Firebird per applicare la modifica.

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

/download/dump/wer_fb_on2.reg

Disabilita WER

/download/dump/wer_fb_off.reg

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

  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

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]