此页面为机器翻译。请阅读英文原文。 English

IBSurgeon 文库

如何使Firebird服务器崩溃

有时需要使Firebird服务器引擎崩溃,以创建转储文件、检查备份/复制方案的可靠性,或用于调试目的。

为了在Windows上引发崩溃,您可以使用以下UDF:badudf.dll.7z

下载它,放入UDF文件夹,并创建包含以下内容的.bat文件:

Code
@echo off
setlocal enabledelayedexpansion enableextensions

set fbc=C:\HQBird25.in
set dbnm=%~dp0tmptest.fdb.tmp
set usr=SYSDBA
set psw=masterkey

del  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

在脚本中,将环境变量 fbc 设置为Firebird文件夹的路径,例如

c:\Firebird25.in 或 C:\Firebird30

并将您的实际超级用户登录名和密码(默认为SYSDBA/masterkey)赋给变量 usrpsw

该脚本将创建临时数据库,在其中注册UDF并执行“杀手查询”,之后删除数据库。

结果将是Firebird崩溃,如果您已正确设置Windows错误报告,将生成firebird.exe进程的转储文件。

请不要在生产数据库中注册BadUDF.dll!

另外,实验结束后请将其从UDF文件夹中删除。