極めて固有な問題が起きた場合は、いつでも
MySQL
のデバッグを試みることができます。デバッグするには、--with-debug
または --with-debug=full
オプションを指定して MySQL
を設定する必要があります。 MySQL
がコンパイルされたかどうかをチェックするには、mysqld
--help
を実行します。--debug
オプションが表示されたらデバッグは有効です。この場合、mysqladmin
ver
を実行すると、mysqld
バージョンが mysql ... --debug
として表示されます。
gcc または egcs の使用時には、以下の configure 行が推奨されています。
CC=gcc CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors \ -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \ --with-debug --with-extra-charsets=complex
これによって、libstdc++
ライブラリと C++
例外に関する問題が回避され(多くのコンパイラでは、スレッドコードで
C++
例外が発生します)、すべてのキャラクタセットのサポート付きで
MySQL がコンパイルされます。
メモリオーバーランエラーの疑いがある場合、--with-debug=full
オプションを指定して MySQL
を設定し、メモリ割当(SAFEMALLOC
)チェッカをインストールできます。ただし、SAFEMALLOC
を指定して実行すると非常に遅くなるので、パフォーマンスの問題が生じたときには
mysqld
を --skip-safemalloc
オプションで起動してください。これによって、malloc()
と free()
に対する呼び出しのたびにメモリオーバーランのチェックが無効になります。
mysqld
が --with-debug
付きのコンパイル時にクラッシュしなくなった場合、コンパイラバグまたはタイミングバグが
MySQL
で検出されたと考えられます。この場合、上記の
CFLAGS
および CXXFLAGS
変数に -g
を追加し、--with-debug
を指定しない方法を試みることができます。mysqld
がクラッシュした場合、少なくとも
gdb
を使用してアタッチするか、コアファイル上で
gdb
を実行して何が起きたか確認することは可能です。
デバッグ用に MySQL
を設定すると、多くの特別なチェック関数が自動的に有効になり、これらによって
mysqld
の状態が監視されます。
``予期しない''
状態が検出された場合、stderr
にエントリが書き込まれ、mysqld_safe
によってエラーログに送信されます。つまり、予期しない問題が
MySQL
で発生したときにソースディストリビューションを使用している場合、まず
MySQL
をデバッグ用に設定する必要があります。その後は
MySQL
メーリングリストにメールを送信し、ヘルプを依頼してください。
See 項1.7.1.1. 「MySQL メーリングリスト」。 ご利用の MySQL
バージョンに関するバグレポートまたは質問については、mysqlbug
を使用してください。
Windows 版 MySQL
ディストリビューションでは、mysqld.exe
がデフォルトでコンパイルされています(トレースファイルのサポート付き)。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.