This is a read-only copy of the MariaDB Knowledgebase generated on 2024-04-30. For the latest, interactive version please visit https://mariadb.com/kb/.

mysql_debug

構文

void mysql_debug(const char * debug);
  • debug - デバッグ対象の文字列。詳細は下記。

Description

Fred Fishのデバッグライブラリを利用することで、開発のためのデバッグを可能にします。 この機能を利用するためには、mariadbのクライアントライブラリがデバッグ有効の状態でコンパイルされている必要があります。

戻り値はありません。

デバッグされる文字列は、以下のようにフィールドがコロンで分割されて出力されます。

フィールド1:フィールド2:フィールドn

それぞれのフィールドはフラグを含みます。オプションでカンマおよびカンマ区切りのmodifierを出力できます。

フラグ[,modifier,modifier,...,modifier]

現在認識されるフラグは下記です。

オプション説明
dDEBUG_マクロからの出力を可能にします。DEBUG_マクロ専用の出力を選択するキーワード一覧に従う可能性があります。nullのキーワード一覧は全てのマクロに対する出力を示しています。
D各デバッガによる出力を遅延させます。マシンの能力によりますが、基本引数は10秒単位で指定します。例 -D,20 とすると20秒出力を遅延させます。
fデバッグ、トレース、名前の付いた関数の一覧に対するプロファイリングを制限します。nullリストが表示される時は、全ての関数に対するデバッグを無効化するという意味です。適切なdやtフラグが指定される必要があります。fフラグは、dやtフラグが有効担っている場合、それらの機能性を制限するだけです。
Fデバッグもしくはトレースしたいソースコードのファイル名を指定します。
iデバッグもしくはトレースしたいプロセスのIDを指定します。
gプロファイリングが可能になります。生成されるdbugmon.outというファイルには、プログラムを分析するための情報が含まれています。実行時に関数のプロファイリング専用のキーワードリストが表示されます。nullリストが表示される場合は、全ての関数がプロファイリング対象になることを示唆しています。
Lデバッグやトレース出力の対象となるソースファイルの行番号を指定します。
nデバッグやトレース出力の対象となる各行に対して、その行が存在する関数のネストの深さを表示します。
Nデバッグ出力される行数を指定します。
oデバッグの出力を特定のファイルにリダイレクトします。デフォルトの出力は標準エラー出力です。
Ooオプションと同じですが、ファイルは書き込みの度にflushされます。必要に応じてファルは一旦クローズされ、書き込みの度に再度オープンされます。
pデバッガの動作を特定のプロセスに限定します。プロセスはDEBUG_PROCESSマクロによって識別される必要があります。加えて、デバッガが動作するためにプロセス一覧の中にあるプロセスと一致する必要があります。
Pデバッグもしくはトレースで出力している際のプロセス名を出力します。
r新しい状態をプッシュする際、前の状態の関数のネストレベルを継承しないでください。出力が左端から始まる場合に便利です。
S関数_sanityが0以外の何かを返すまで、デバッグ中の各関数に対して関数_sanity(_file_, _line)を実行します。(主にsafemallocで使用されます)
t関数call/exitのトレース行を有効にします。修飾子を一つだけ含むリストが後に続くことがあります。リストは最大トレースレベルを数値で示しており、このレベルを超えると、デバッグマクロとトレースマクロどちらに対しても出力は行われません。デフォルトではコンパイル時のオプションです。

mysql_debug()の機能を利用する代わりに、環境変数MYSQL_DEBUGを設定することでもデバッグが可能です。

デバッグを有効化すると、巨大なデバッグファイルを生成されるため、全体的なパフォーマンスが劣化します。特定のケースのみでデバッグ情報を必要とする場合、mysql_debug_end()を使ってデバッグ情報の生成を無効化できます。

合わせて読む

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.