24.5.3 DBUG 패키지
MySQL 서버 및 대부분의 MySQL 클라이언트는 원래 Fred Fish에 의해 작성된 DBUG 패키지와 함께 컴파일됩니다. MySQL을 디버그 용으로 구성한 경우이 패키지는 프로그램을 실행하는 내용의 추적 파일을 검색 할 수 있습니다. 섹션 24.4.1.2 "추적 파일 만들기" 를 참조하십시오.
이 섹션에서는 디버깅 지원하도록 구축 된 MySQL 프로그램의 명령 줄 디버깅 옵션으로 지정할 수있는 인수 값을 정리하고 있습니다. DBUG 패키지를 사용한 프로그래밍은 MySQL 소스 배포판의 dbug
디렉토리에있는 DBUG 설명서를 참조하십시오. 최신 DBUG 설명서를 얻으려면 최신 배포판을 사용하십시오.
DBUG 패키지는 --debug[=
또는 debug_options
]-# [
옵션을 지정하여 프로그램을 시작하여 사용할 수 있습니다. debug_options
]--debug
또는 -#
옵션을 지정하여 debug_options
값을 지정하지 않으면 대부분의 MySQL 프로그램에서는 기본값이 사용됩니다. 서버의 기본은 Unix의 경우 d:t:i:o,/tmp/mysqld.trace
, Windows의 경우 d:t:i:O,\mysqld.trace
입니다. 이 기본값은 다음과 같은 효과가 있습니다.
d
: 모든 디버그 매크로 출력을 활성화합니다t
: 함수 호출 및 종료를 추적합니다i
: 출력 행에 PID를 추가합니다o,/tmp/mysqld.trace
, OO,\mysqld.trace
: 디버그 출력 파일을 설정합니다
대부분의 클라이언트 프로그램은 플랫폼에 관계없이 기본 debug_options
값인 d:t:o,/tmp/
가 사용됩니다. program_name
.trace
쉘 명령 행에서 지정 될 수있는 디버그 제어 문자열의 몇 가지 예를 보여줍니다.
--debug=d:t --debug=d:f,main,subr1:F:L:t,20 --debug=d,input,output,files:n --debug=d:t:i:O,\\mysqld.trace
mysqld의 경우 debug
시스템 변수를 설정하여 DBUG 설정을 런타임에 변경할 수 있습니다. 이 변수는 글로벌 값과 세션 값이 있습니다.
mysql>SET GLOBAL debug = '
mysql>debug_options
';SET SESSION debug = '
debug_options
';
런타임에 변경하려면 세션 값도 SUPER
권한이 필요합니다.
debug_options
값은 콜론으로 구분 된 일련의 필드입니다.
field_1:field_2:...:field_N
이 값의 각 필드는 필수 플래그 문자로 구성된 플래그 문자 앞에 +
문자 또는 -
문자 및 플래그 문자 뒤에 쉼표로 구분 한정자 목록이 옵션으로 추가 될 수 있습니다.
[+|-]flag[,modifier,modifier,...,modifier]
다음 표는 허용되는 플래그 문자를 보여줍니다. 인식되지 않는 플래그 문자는 암묵적으로 무시됩니다.
플래그 | 설명 |
| DBUG_ MySQL에서는 일반적으로 사용되는 디버깅 매크로의 키워드는 |
| 각 디버거 출력 행의 뒤에 대기합니다. 인수는 0.1 초 단위의 대기 시간이며, 컴퓨터의 능력의 영향을받습니다. 예를 들어, |
| 디버그 추적 및 프로필 대상을 지정된 함수 목록에 제한합니다. 빈 목록의 경우 모든 기능을 사용할 수 있습니다. 적절한 |
| 디버그 출력 또는 추적 출력의 각 행에 소스 파일 이름을 나타냅니다. |
| 디버그 출력 또는 추적 출력의 각 행에 PID 또는 스레드 ID로 프로세스를 나타냅니다. |
| 디버그 출력 또는 추적 출력의 각 행에 소스 파일의 행 번호를 나타냅니다. |
| 디버그 출력 또는 추적 출력의 각 행에 현재 함수의 중첩 깊이를 출력합니다. |
| 디버그 출력의 각 줄에 번호를 지정합니다. |
| 디버거의 출력 스트림을 지정된 파일로 리디렉션합니다. 기본 출력은 |
| |
| 디버거 작업을 지정된 프로세스에 한정합니다. 디버거 작업을 수행하기 위해서는 프로세스가 |
| 디버그 출력 또는 추적 출력의 각 행에 현재의 프로세스 이름을 출력합니다. |
| 새로운 상태를 푸시 할 때 이전 상태 함수의 중첩 수준을 상속하지 않습니다. 출력을 왼쪽 여백에서 시작하는 경우에 유용합니다. |
| |
| 함수 호출 / 종료 추적 행을 사용합니다. 최대 추적 수준을 나타내는 수치를 지정하는 목록 (수식이 하나 포함되어 있습니다) 그 뒤에 온다 계속되는 경우가 있고, 그것을 넘으면 디버깅 매크로 또는 추적 매크로 출력되지 않습니다. 기본값은 컴파일시 옵션입니다. |
플래그의 앞에 +
문자 나 -
문자 및 플래그 문자 목록은 d
, f
등의 플래그 문자에 사용하여 해당하는 모든 수정자 또는 그중 일부만 디버깅 작업을 수행 할 수 있습니다.
플래그의 전에
+
또는-
가 없으면 플래그 값은 지정된 수식 목록과 같이 설정됩니다.플래그의 전에
+
또는-
이 경우에는 목록에서 수식자가 현재 한정자 목록에 추가 또는 삭제됩니다.
다음의 예는 d
플래그에서이 동작을 보여줍니다. d
목록이 비어 있으면 모든 디버그 매크로 출력이 활성화됩니다. 목록이 비어 있지 않은 경우 목록에서 매크로 키워드의 출력 만 사용할 수 있습니다.
다음 문은 지정된대로 d
값이 수식 목록으로 설정됩니다.
mysql>SET debug = 'd';
mysql>SELECT @@debug;
+---------+ | @@debug | +---------+ | d | +---------+ mysql>SET debug = 'd,error,warning';
mysql>SELECT @@debug;
+-----------------+ | @@debug | +-----------------+ | d,error,warning | +-----------------+
플래그 이전 +
또는 -
현재 d
값에 추가 또는 삭제합니다.
mysql>SET debug = '+d,loop';
mysql>SELECT @@debug;
+----------------------+ | @@debug | +----------------------+ | d,error,warning,loop | +----------------------+ mysql>SET debug = '-d,error,loop';
mysql>SELECT @@debug;
+-----------+ | @@debug | +-----------+ | d,warning | +-----------+
"모든 매크로가 유효한 상태"에 추가 한 경우에는 아무것도 변경되지 않습니다.
mysql>SET debug = 'd';
mysql>SELECT @@debug;
+---------+ | @@debug | +---------+ | d | +---------+ mysql>SET debug = '+d,loop';
mysql>SELECT @@debug;
+---------+ | @@debug | +---------+ | d | +---------+
유효한 모든 매크로 제외하면 d
플래그는 완전히 비활성화됩니다.
mysql>SET debug = 'd,error,loop';
mysql>SELECT @@debug;
+--------------+ | @@debug | +--------------+ | d,error,loop | +--------------+ mysql>SET debug = '-d,error,loop';
mysql>SELECT @@debug;
+---------+ | @@debug | +---------+ | | +---------+
MySQL 5.6.12 이전에는, +
및 -
한정자가 제대로 처리되지 않을 수 플래그 값이 잘못된 상태로 남아있을 수 있습니다. debug
설정 순서를 사전에 확인하거나 +
또는 -
를 사용하지 않고 설정하십시오.