MySQL サーバーおよびほとんどの MySQL クライアントは、もともと Fred Fish によって作成された DBUG パッケージとともにコンパイルされます。 MySQL をデバッグ用に構成した場合は、このパッケージによって、プログラムが実行している内容のトレースファイルを取得できるようになります。 セクション5.9.1.2「トレースファイルの作成」を参照してください。
このセクションでは、デバッグサポート付きでビルドされた MySQL プログラムのコマンド行のデバッグオプションに指定できる引数値をまとめています。
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
、O,\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 = 'debug_options';
mysql> SET SESSION debug = 'debug_options';
グローバル debug
値を変更するには、グローバルシステム変数を設定するのに十分な権限が必要です。 セッションの debug
値を変更するには、制限付きセッションシステム変数を設定するのに十分な権限が必要です。 セクション5.1.9.1「システム変数権限」を参照してください。
debug_options
値は、コロンで区切られた一連のフィールドです。
field_1:field_2:...:field_N
値内の各フィールドは、必須フラグ文字で構成され、オプションで +
または -
文字が前に付き、オプションで修飾子のカンマ区切りリストが続きます:
[+|-]flag[,modifier,modifier,...,modifier]
次の表は、許可されるフラグ文字を示しています。 認識されないフラグ文字は暗黙のうちに無視されます。
フラグ |
説明 |
---|---|
|
DBUG_
MySQL では、一般的に有効にされるデバッグマクロのキーワードは、 |
|
各デバッガの出力行のあとに待機します。 引数は 0.1 秒単位の待機時間であり、マシンの能力の影響を受けます。 たとえば、 |
|
デバッグ、トレース、およびプロファイリングの対象を指定された関数のリストに制限します。 空のリストの場合はすべての関数が有効になります。 適切な |
|
デバッグ出力またはトレース出力の各行にソースファイル名を示します。 |
|
デバッグ出力またはトレース出力の各行に PID またはスレッド ID でプロセスを示します。 |
|
デバッグ出力またはトレース出力の各行にソースファイルの行番号を示します。 |
|
デバッグ出力またはトレース出力の各行に現在の関数のネストの深さを出力します。 |
|
デバッグ出力の各行に番号を付けます。 |
|
デバッガの出力ストリームを指定されたファイルにリダイレクトします。 デフォルトの出力先は |
|
|
|
デバッガアクションを指定されたプロセスに限定します。 デバッガアクションが実行されるためには、プロセスが |
|
デバッグ出力またはトレース出力の各行に現在のプロセス名を出力します。 |
|
新しい状態をプッシュするときに、前の状態の関数のネストレベルを継承しません。 出力を左マージンから開始する場合に便利です。 |
|
|
|
関数の呼び出し/終了のトレース行を有効にします。 最大のトレースレベルを示す数値を指定するリスト (修飾子が 1 つだけ含まれています) があとに続く場合があり、それを超えるとデバッグマクロまたはトレースマクロの出力は行われません。 デフォルトはコンパイル時のオプションです。 |
フラグの前の +
文字や -
文字、およびフラグの後ろに続く修飾子のリストは、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 |
+---------+
| |
+---------+