Diese Seite wurde maschinell übersetzt. Lesen Sie das englische Original. English

IBSurgeon-Bibliothek

So konfigurieren Sie die Firebird-Dump-Erfassung unter Windows

Kurz gesagt gibt es 3 Schritte:

  1. Wenn Sie Firebird mit der Guardian-Option installiert haben, deaktivieren Sie Firebird Guardian - setzen Sie dessen Dienst auf „Deaktiviert“ und ändern Sie den Firebird-Server von „Manuell“ auf „Automatisch“.

  2. Setzen Sie in der firebird.conf den Parameter BugCheckAbort=1 (und kommentieren Sie ihn bei Bedarf aus) und starten Sie Firebird neu, um die Änderung zu übernehmen.

  3. Konfigurieren und verifizieren Sie die Dump-Erfassung für die Firebird-Ausführungsdatei in der Windows-Fehlerberichterstattung (WER)

Wichtig!

Stellen Sie sicher, dass sich Dateien mit Debug-Informationen (Erweiterung *.pdb) im Firebird-Ordner befinden. Die HQbird Enterprise-Distribution enthält diese Dateien bereits, und für Community-Firebird können diese Dateien von der Firebird-Download-Seite heruntergeladen werden - verwenden Sie den Download-Link mit „debug“.

Die folgenden PDB-Dateien sollten abgelegt werden:

für Firebird 2.5.x:

fbclient.pdb, fbembed.pdb, fbserver.pdb, fb_inet_server.pdb - in den bin-Ordner von Firebird

für Firebird 3.x und Firebird 4.x:

fbclient.pdb und firebird.pdb - in den Hauptordner von Firebird;

engine12.pdb (für 3.x) und engine13.pdb (für 4.x) - in den Ordner plugins\

Einrichtung von WER

Fertige REG-Dateien

WER aktivieren

/download/dump/wer_fb_on2.reg

WER deaktivieren

/download/dump/wer_fb_off.reg

Nachfolgend finden Sie die detaillierte Beschreibung, was zur manuellen Einrichtung getan werden sollte:

Um WER einzurichten, suchen Sie in der Registrierung den folgenden Schlüssel

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

und öffnen Sie dessen Unterschlüssel.

Markieren Sie „ Windows Error Reporting“ und stellen Sie sicher, dass es einen Parameter mit dem Namen Disabled, Typ REG_DWORD, gibt und dessen Wert 0 ist.

Öffnen Sie ihn.

Hinweis! Verwechseln Sie diesen Schlüssel nicht mit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (ohne Windows nach Microsoft\).

Im Schlüssel

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

erstellen Sie (oder setzen Sie nur, falls bereits erstellt) den Parameter:

Name: DontShowUI

Typ: DWORD

Wert: 1

Dann, im geöffneten Schlüssel

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

finden Sie den Unterschlüssel LocalDumps; erstellen Sie ihn, falls er nicht existiert.

Öffnen Sie dann HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.

WER ermöglicht die Angabe von allgemeinen und lokalen (privaten) Einstellungen.

Im Allgemeinen benötigen wir Dumps für alle Prozesse.

Erstellen Sie dazu Parameter im Unterordner LocalDumps:

  • DumpFolder, REG_EXPAND_SZ, - Ordnername, in dem die Dumps gespeichert werden. Er sollte genügend freien Speicherplatz haben (~2x die Größe des RAM des Servers, wenn Sie SuperServer oder SuperClassic ausführen). Außerdem müssen die Konten, die zum Ausführen der zu dumpenden Dienste verwendet werden, Berechtigungen für diesen Ordner haben (deshalb kann ein Netzwerkpfad eine schlechte Wahl sein, da das LocalSystem-Konto, das von Firebird verwendet wird, keine Rechte für den Zugriff auf entfernte Speicherorte hat).
  • DumpCount, REG_DWORD, - maximale Anzahl von Dump-Dateien (Dumps werden nach Erreichen dieser Anzahl rotiert), setzen Sie 2 oder mehr
  • DumpType, REG_DWORD, - Dump-Typ, muss 2 sein.

Wenn ein Absturz auftritt, wird die Dump-Datei in dem Ordner erstellt, der in DumpFolder konfiguriert ist!

Weitere Details zur WER-Einrichtung

  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

So überprüfen Sie die Dump-Erstellung (nur wenn keine echten Benutzer verbunden sind!)

Um die Dump-Erfassung zu testen, müssen wir einen Firebird-Absturz provozieren: Laden Sie /download/killudf/badudf.dll.7z herunter

Entpacken Sie die Datei und legen Sie badudf.dll in den Ordner UDF ( vergessen Sie nicht, sie nach dem Test zu entfernen!) und führen Sie dann die folgende CMD-Datei aus

@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

Kontaktieren Sie uns

Wenn Sie Firebird-Abstürze oder anderes ungewöhnliches Verhalten feststellen, kontaktieren Sie uns bitte: [email protected]