このページは機械翻訳されています。英語の原文をお読みください。 English

IBSurgeon ライブラリ

WindowsでFirebirdのダンプ収集を設定する方法

手順は、簡単に言うと次の3ステップです:

  1. Guardianオプション付きでFirebirdをインストールしている場合は、Firebird Guardianを無効にします(サービスを「無効」に設定し、Firebird Serverを「手動」から「自動」に変更します)。

  2. firebird.confのパラメータ BugCheckAbort=1 を設定し(必要に応じてコメントを解除)、Firebirdを再起動して適用します。

  3. 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を有効にする

/download/dump/wer_fb_on2.reg

WERを無効にする

/download/dump/wer_fb_off.reg

以下は、手動で設定する場合の詳細な説明です:

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設定の詳細

  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

ダンプ作成の確認方法(実際のユーザーが接続していない場合のみ!)

ダンプ収集をテストするには、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] までご連絡ください。