Deze pagina is automatisch vertaald. Lees het Engelse origineel. English

IBSurgeon-bibliotheek

Hoe Firebird dump-verzameling op Windows configureren

Kort samengevat zijn er 3 stappen:

  1. Als je Firebird met de Guardian-optie hebt geïnstalleerd, schakel dan Firebird Guardian uit - stel de service in op Uitgeschakeld en wijzig Firebird Server van handmatig naar automatisch.

  2. Stel in firebird.conf de parameter BugCheckAbort=1 in (en verwijder indien nodig de commentaar), en herstart Firebird om dit toe te passen.

  3. Configureer en verifieer de dumpverzameling voor het Firebird uitvoerbare bestand in Windows Error Reporting (WER)

Belangrijk!

Zorg ervoor dat je bestanden met debug-informatie (extensie *.pdb) in de Firebird-map hebt. HQbird Enterprise-distributie bevat deze bestanden al, en voor community Firebird kunnen deze bestanden worden gedownload van de Firebird-downloadpagina - gebruik de downloadlink met “debug”.

De volgende pdb-bestanden moeten worden geplaatst:

voor Firebird 2.5.x:

fbclient.pdb, fbembed.pdb, fbserver.pdb fb_inet_server.pdb - naar de bin-map van Firebird

voor Firebird 3.x en Firebird 4.x:

fbclient.pdb en firebird.pdb - naar de hoofdmap van Firebird;

engine12.pdb (voor 3.x) en engine13.pdb (voor 4.x) - naar de map plugins\

WER instellen

Kant-en-klare reg-bestanden

WER inschakelen

/download/dump/wer_fb_on2.reg

WER uitschakelen

/download/dump/wer_fb_off.reg

Hieronder volgt de gedetailleerde beschrijving van wat er moet gebeuren om dit handmatig in te stellen:

Om WER in te stellen, zoek je in het register de volgende sleutel

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

en open de subkeys ervan.

Markeer " Windows Error Reporting" en zorg ervoor dat er een parameter is met de naam Disabled, type REG_DWORD, en dat de waarde 0 is.

Open het.

Let op! Verwar deze sleutel niet met HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (zonder Windows na Microsoft\).

In de sleutel

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

maak je de parameter aan (of stel je deze alleen in als deze al bestaat):

naam: DontShowUI

type: DWORD

waarde: 1

Open vervolgens op de geopende sleutel

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

de subkey LocalDumps; maak deze aan als deze niet bestaat.

Open daarna HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.

WER staat toe om algemene en lokale (privé) instellingen op te geven.

Over het algemeen hebben we dumps nodig voor alle processen.

Maak hiervoor parameters aan in de submap LocalDumps:

  • DumpFolder, REG_EXPAND_SZ, - mapnaam waar dumps moeten worden opgeslagen. Deze moet voldoende vrije ruimte hebben (~2x de hoeveelheid RAM van de server als je SuperServer of SuperClassic draait). Ook moeten accounts die worden gebruikt om services uit te voeren die gedumpt moeten worden, rechten hebben voor deze map (daarom kan een netwerklocatie een slechte keuze zijn, omdat het LocalSystem-account, dat door Firebird wordt gebruikt, geen rechten heeft om toegang te krijgen tot externe locaties).
  • DumpCount, REG_DWORD, - maximaal aantal dumpbestanden (dumps worden geroteerd nadat dit aantal is bereikt), stel 2 of meer in
  • DumpType, REG_DWORD, - dumptype, moet 2 zijn.

Wanneer een crash optreedt, wordt het dumpbestand gemaakt in de map die is geconfigureerd in DumpFolder!

Meer details over WER-instellingen

  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

Hoe de dumpcreatie te controleren (alleen wanneer er geen echte gebruikers zijn verbonden!)

Om de dumpverzameling te testen, moeten we een Firebird-crash veroorzaken: download /download/killudf/badudf.dll.7z

pak uit en plaats badudf.dll in de map UDF ( vergeet niet om het na de test te verwijderen!) en voer daarna het volgende cmd-bestand uit

@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

Neem contact met ons op

Als je Firebird-crashes of ander abnormaal gedrag ervaart, neem dan contact met ons op: [email protected]