如何使Firebird服务器崩溃
有时需要使Firebird服务器引擎崩溃,以创建转储文件、检查备份/复制方案的可靠性,或用于调试目的。
为了在Windows上引发崩溃,您可以使用以下UDF:badudf.dll.7z
下载它,放入UDF文件夹,并创建包含以下内容的.bat文件:
@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)赋给变量 usr 和 psw。
该脚本将创建临时数据库,在其中注册UDF并执行“杀手查询”,之后删除数据库。
结果将是Firebird崩溃,如果您已正确设置Windows错误报告,将生成firebird.exe进程的转储文件。
请不要在生产数据库中注册BadUDF.dll!
另外,实验结束后请将其从UDF文件夹中删除。