WindowsでFirebirdのダンプ収集を設定する方法
手順は、簡単に言うと次の3ステップです:
-
Guardianオプション付きでFirebirdをインストールしている場合は、Firebird Guardianを無効にします(サービスを「無効」に設定し、Firebird Serverを「手動」から「自動」に変更します)。
-
firebird.confのパラメータ BugCheckAbort=1 を設定し(必要に応じてコメントを解除)、Firebirdを再起動して適用します。
-
Windowsエラー報告(WER)でFirebird実行ファイルのダンプ収集を設定し、確認します。
重要!
Firebirdフォルダにデバッグ情報ファイル(拡張子 *.pdb)があることを確認してください。HQbird Enterpriseディストリビューションにはすでにこれらのファイルが含まれています。コミュニティ版Firebirdの場合は、Firebirdのダウンロードページから「debug」付きのダウンロードリンクを使用してこれらのファイルをダウンロードできます。
以下のpdbファイルを配置する必要があります:
Firebird 2.5.xの場合:
fbclient.pdb、fbembed.pdb、fbserver.pdb、fb_inet_server.pdb - Firebirdのbin\フォルダへ
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(Microsoft\の後にWindowsがないもの)と混同しないでください。
次のキーで
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 - ダンプを保存するフォルダ名。十分な空き容量(SuperServerまたはSuperClassicを実行している場合は、サーバーのRAMの約2倍)が必要です。また、ダンプ対象のサービスを実行するアカウントにこのフォルダへのアクセス権限が必要です(そのため、ネットワーク上の場所は適さない場合があります。Firebirdが使用するLocalSystemアカウントにはリモートの場所へのアクセス権がないためです)。
- 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] までご連絡ください。