Esta página fue traducida automáticamente. Lee el original en inglés. English

Biblioteca de IBSurgeon

Cómo configurar la recopilación de volcados de Firebird en Windows

En resumen, hay 3 pasos:

  1. Si ha instalado Firebird con la opción Guardian, desactive Firebird Guardian: configure su servicio en Deshabilitado y cambie Firebird Server de manual a automático.

  2. Establezca en firebird.conf el parámetro BugCheckAbort=1 (y descomente, si es necesario), y reinicie Firebird para aplicarlo.

  3. Configure y verifique la recopilación de volcados para el ejecutable de Firebird en Informes de errores de Windows (WER)

¡Importante!

Asegúrese de tener archivos con información de depuración (extensión *.pdb) en la carpeta de Firebird. La distribución HQbird Enterprise ya incluye estos archivos, y para Firebird comunitario, estos archivos se pueden descargar desde la página de descarga de Firebird: use el enlace de descarga con “debug”.

Los siguientes archivos pdb deben colocarse:

para Firebird 2.5.x:

fbclient.pdb, fbembed.pdb, fbserver.pdb fb_inet_server.pdb - en la carpeta bin\ de Firebird

para Firebird 3.x y Firebird 4.x:

fbclient.pdb y firebird.pdb - en la carpeta raíz de Firebird;

engine12.pdb (para 3.x) y engine13.pdb (para 4.x) - en la carpeta plugins\

Configuración de WER

Archivos reg listos para usar

Habilitar WER

/download/dump/wer_fb_on2.reg

Deshabilitar WER

/download/dump/wer_fb_off.reg

A continuación se muestra la descripción detallada de lo que se debe hacer para configurarlo manualmente:

Para configurar WER, busque en el registro la siguiente clave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

y abra sus subclaves.

Resalte " Informes de errores de Windows" y asegúrese de que exista un parámetro con el nombre Disabled, tipo REG_DWORD, y su valor sea 0.

Ábralo.

¡Nota! No confunda esta clave con HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (sin Windows después de Microsoft\).

En la clave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

cree (o solo establezca si ya existe) el parámetro:

nombre: DontShowUI

tipo: DWORD

valor: 1

Luego, en la clave abierta

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

busque la subclave LocalDumps; créela si no existe.

Luego abra HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.

WER permite especificar configuraciones comunes y locales (privadas).

En general, necesitamos volcados para todos los procesos.

Para ello, cree parámetros en la subcarpeta LocalDumps:

  • DumpFolder, REG_EXPAND_SZ, - nombre de la carpeta donde almacenar los volcados. Debe tener suficiente espacio libre (~2 veces la RAM del servidor si está ejecutando SuperServer o SuperClassic). Además, las cuentas que se utilizan para ejecutar los servicios que se van a volcar deben tener permisos para esta carpeta (por eso una ubicación de red puede ser una mala elección, ya que la cuenta LocalSystem, que utiliza Firebird, no tiene derechos para acceder a ubicaciones remotas).
  • DumpCount, REG_DWORD, - número máximo de archivos de volcado (los volcados se rotarán al alcanzar ese número), establezca 2 o más
  • DumpType, REG_DWORD, - tipo de volcado, debe ser 2.

¡Cuando ocurra un fallo, el archivo de volcado se creará en la carpeta configurada en DumpFolder!

Más detalles sobre la configuración de 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

Cómo verificar la creación de volcados (¡solo cuando no haya usuarios reales conectados!)

Para probar la recopilación de volcados, debemos provocar un fallo de Firebird: descargue /download/killudf/badudf.dll.7z

descomprima y coloque badudf.dll en la carpeta UDF ( ¡no olvide eliminarlo después de la prueba!) y luego ejecute el siguiente archivo 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

Contáctenos

Si está experimentando fallos de Firebird u otro comportamiento anormal, contáctenos: [email protected]