Як налаштувати збір дампів Firebird у Windows
Коротко, є 3 кроки:
-
Якщо ви встановили Firebird з опцією Guardian, вимкніть Firebird Guardian - встановіть його службу в стан Disable, і змініть Firebird Server з manual на automatic.
-
Встановіть у firebird.conf параметр BugCheckAbort=1 (і розкоментуйте, якщо необхідно), і перезапустіть Firebird, щоб застосувати зміни.
-
Налаштуйте та перевірте збір дампів для виконуваного файлу Firebird у Windows Error Reporting (WER)
Важливо!
Переконайтеся, що у вас є файли з інформацією для налагодження (розширення *.pdb) у папці Firebird. Дистрибутив HQbird Enterprise вже містить ці файли, а для спільної версії Firebird ці файли можна завантажити зі сторінки завантаження Firebird - використовуйте посилання для завантаження з “debug”.
Наступні pdb файли мають бути розміщені:
для Firebird 2.5.x:
fbclient.pdb, fbembed.pdb, fbserver.pdb fb_inet_server.pdb - у папку bin\ каталогу Firebird
для Firebird 3.x та Firebird 4.x:
fbclient.pdb та firebird.pdb - у кореневу папку Firebird;
engine12.pdb (для 3.x) та engine13.pdb (для 4.x) - у папку plugins\
Налаштування WER
Готові до використання reg-файли
Увімкнути WER
Вимкнути WER
Нижче наведено детальний опис того, що потрібно зробити для ручного налаштування:
Щоб налаштувати WER, знайдіть у реєстрі наступний ключ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
і відкрийте його підключі.
Виділіть " Windows Error Reporting" і переконайтеся, що існує параметр з назвою Disabled, тип REG_DWORD, і його значення дорівнює 0.
Відкрийте його.
Примітка! Не плутайте цей ключ з HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (без Windows після Microsoft\).
У ключі
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
створіть (або лише встановіть, якщо вже створено) параметр:
ім’я: DontShowUI
тип: DWORD
значення: 1
Потім, у відкритому ключі
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
знайдіть підключ LocalDumps; створіть його, якщо він не існує.
Потім відкрийте HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.
WER дозволяє вказувати загальні та локальні (приватні) налаштування.
Загалом, нам потрібні дампи для всіх процесів.
Для цього створіть параметри в підпапці LocalDumps:
- DumpFolder, REG_EXPAND_SZ, - назва папки, де зберігати дампи. Вона повинна мати достатньо вільного місця (~2x від обсягу оперативної пам’яті сервера, якщо ви запускаєте SuperServer або SuperClassic). Також облікові записи, які використовуються для запуску служб, для яких створюються дампи, повинні мати права доступу до цієї папки (тому мережеве розташування може бути поганим вибором, оскільки обліковий запис LocalSystem, який використовується Firebird, не має прав доступу до віддалених розташувань).
- DumpCount, REG_DWORD, - максимальна кількість файлів дампів (дампи будуть ротуватися після досягнення цього числа), встановіть 2 або більше
- DumpType, REG_DWORD, - тип дампа, має бути 2.
Коли станеться збій, файл дампа буде створено в папці, налаштованій у DumpFolder!
Більше деталей про налаштування 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
Як перевірити створення дампа (тільки коли немає реальних користувачів!)
Щоб перевірити збір дампів, нам потрібно спровокувати збій Firebird: завантажте /download/killudf/badudf.dll.7z
розпакуйте та помістіть badudf.dll у папку UDF ( не забудьте видалити його після тесту!) і потім запустіть наступний 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
Зв’яжіться з нами
Якщо у вас виникають збої Firebird або інша ненормальна поведінка, будь ласка, зв’яжіться з нами: [email protected]