이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. 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]