Si vous avez un problème spécifique, vous pouvez toujours
essayer de déboguer MySQL. Pour ce faire, vous devez configurer
MySQL avec l'option --with-debug
ou
--with-debug=full
. Vous pouvez vérifier si
MySQL est déjà compilé avec le support du débogage en
faisant ceci : mysqld --help
. Si l'attribut
--debug
est listé avec les options, cela veut
dire que le support du débogage est activé. Dans ce cas,
mysqladmin ver
liste aussi la version de
mysqld
en tant que mysql ...
--debug
.
Si vous utilisez gcc ou egcs, la ligne de configuration recommandée est :
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
Cela évitera les problèmes avec la bibliothèque
libstdc++
et les exceptions C++ (plusieurs
compilateurs ont des problèmes avec les exceptions C++ dans le
code threadé) et compilera une version MySQL avec le support de
tous les jeux de caractères.
Si vous suspectez un dépassement de la mémoire, vous pouvez
configurer MySQL avec --with-debug=full
, qui
installera un vérificateur d'allocation mémoire
(SAFEMALLOC
). Fonctionner avec
SAFEMALLOC
est cependant un peu ralentissant,
et donc, si vous rencontrez des problèmes de performances, vous
devez démarrer mysqld
avec l'option
--skip-safemalloc
. Cela désactivera les
vérifications de dépassements de mémoire pour chaque appel à
malloc
ou free
.
Si mysqld
ne plante plus lorsque vous le
compilez avec --with-debug
, vous avez
probablement trouvé un bogue du compilateur ou un bogue de
temporisation dans MySQL. Dans ce cas, vous pouvez essayer
d'ajouter -g
aux variables
CFLAGS
et CXXFLAGS
vues
plus haut et ne pas utiliser --with-debug
. Si
mysqld
plante maintenant, vous pouvez vous y
attacher avec gdb
ou utiliser
gdb
sur le fichier noyau pour trouver ce qui
est arrivé.
Lorsque vous configurez MySQL pour le support du débogage, vous
activez automatiquement un tas de fonctions de tests
supplémentaires qui se chargent de surveiller le bon
fonctionnement de mysqld
. Si elles trouvent
quelque chose d'inattendu (``unexpected
''),
une entrée sera écrite dans stderr
, que
safe_mysqld
redirige vers le log d'erreurs !
Cela signifie aussi que si vous avez quelques problèmes
inattendus avec MySQL et que vous utilisez une distribution des
sources, la première chose à faire est de configurer MySQL
avec le support du débogage ! (la seconde, bien sûr, étant
d'envoyer un mail sur les listes de diffusion pour demander de
l'aide. ) See Section 1.4.1.1, « Les listes de diffusion de MySQL ». Merci d'utiliser
le script mysqlbug
pour tous les rapport de
bogues ou questions concernant la version de MySQL que vous
utilisez !
Dans la distribution Windows de MySQL,
mysqld.exe
est par défaut compilé avec le
support des fichiers de tra¸age.
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.