Cách cấu hình thu thập dump Firebird trên Windows
Tóm lại, có 3 bước:
-
Nếu bạn đã cài đặt Firebird với tùy chọn Guardian, hãy vô hiệu hóa Firebird Guardian - đặt dịch vụ của nó thành Disable, và thay đổi Firebird Server từ manual sang automatic.
-
Đặt trong firebird.conf tham số BugCheckAbort=1 (và bỏ comment, nếu cần), rồi khởi động lại Firebird để áp dụng.
-
Cấu hình và xác minh việc thu thập dump cho tệp thực thi Firebird trong Windows Error Reporting (WER)
Quan trọng!
Hãy đảm bảo bạn có các tệp thông tin gỡ lỗi (phần mở rộng *.pdb) trong thư mục Firebird. Bản phân phối HQbird Enterprise đã có sẵn các tệp này, và đối với Firebird cộng đồng, các tệp này có thể tải xuống từ trang tải Firebird - sử dụng liên kết tải xuống có “debug”.
Các tệp pdb sau nên được đặt:
cho Firebird 2.5.x:
fbclient.pdb, fbembed.pdb, fbserver.pdb fb_inet_server.pdb - vào thư mục bin\ của Firebird
cho Firebird 3.x và Firebird 4.x:
fbclient.pdb và firebird.pdb - vào thư mục gốc của Firebird;
engine12.pdb (cho 3.x) và engine13.pdb (cho 4.x) - vào thư mục plugins\
Thiết lập WER
Các tệp reg sẵn sàng sử dụng
Bật WER
Tắt WER
Dưới đây là mô tả chi tiết về những gì cần làm để thiết lập thủ công:
Để thiết lập WER, hãy tìm trong registry khóa sau
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
và mở các khóa con của nó.
Đánh dấu " Windows Error Reporting" và đảm bảo có tham số tên Disabled, loại REG_DWORD, và giá trị của nó là 0.
Mở nó.
Lưu ý! Đừng nhầm lẫn khóa này với HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting (không có Windows sau Microsoft\).
Trong khóa
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
tạo (hoặc chỉ đặt nếu đã tạo) tham số:
tên: DontShowUI
loại: DWORD
giá trị: 1
Sau đó, trên khóa đã mở
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
tìm khóa con LocalDumps; tạo nó, nếu nó chưa tồn tại.
Sau đó mở HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps.
WER cho phép chỉ định các cài đặt chung và cục bộ (riêng tư).
Nói chung, chúng ta cần dump cho tất cả các tiến trình.
Để làm điều này, hãy tạo các tham số trong thư mục con LocalDumps:
- DumpFolder, REG_EXPAND_SZ, - tên thư mục nơi lưu trữ dump. Nó phải có đủ dung lượng trống (~2 lần RAM của máy chủ nếu bạn đang chạy SuperServer hoặc SuperClassic). Ngoài ra, các tài khoản được sử dụng để chạy các dịch vụ cần dump phải có quyền truy cập vào thư mục này (đó là lý do tại sao vị trí mạng có thể là lựa chọn tồi, vì tài khoản LocalSystem, được Firebird sử dụng, không có quyền truy cập vào các vị trí từ xa).
- DumpCount, REG_DWORD, - số lượng tối đa các tệp dump (dump sẽ được xoay vòng sau khi đạt đến số đó), đặt 2 hoặc nhiều hơn
- DumpType, REG_DWORD, - loại dump, phải là 2.
Khi sự cố xảy ra, tệp dump sẽ được tạo trong thư mục, được cấu hình trong DumpFolder!
Thêm chi tiết về thiết lập 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
Cách kiểm tra việc tạo dump (chỉ khi không có người dùng thực tế nào đang kết nối!)
Để kiểm tra việc thu thập dump, chúng ta cần kích hoạt sự cố Firebird: tải xuống /download/killudf/badudf.dll.7z
giải nén và đặt badudf.dll vào thư mục UDF ( đừng quên xóa nó sau khi kiểm tra!) rồi chạy tệp cmd sau
@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
Liên hệ với chúng tôi
Nếu bạn đang gặp sự cố Firebird hoặc hành vi bất thường khác, vui lòng liên hệ với chúng tôi: [email protected]