Sur quelques systèmes d'exploitation, le log d'erreurs
contiendra un fichier de pile mémoire si
mysqld
se termine soudainement. Vous pouvez
utiliser ceci pour trouver où (et peut-être pourquoi)
mysqld
s'est terminé. See
Section 5.9.1, « Le log d'erreurs ». Pour obtenir un tra¸age de la
pile, vous ne devez pas compiler mysqld
avec
l'option -fomit-frame-pointer
de
gcc
. See
Section D.1.1, « Compiler MYSQL pour le débogage ».
Si le fichier d'erreurs contient quelque chose qui ressemble à ce qui suit :
mysqld got signal 11; The manual section 'Debugging a MySQL server' tells you how to use a stack trace and/or the core file to produce a readable backtrace that may help in finding out why mysqld died Attemping backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong stack range sanity check, ok, backtrace follows 0x40077552 0x81281a0 0x8128f47 0x8127be0 0x8127995 0x8104947 0x80ff28f 0x810131b 0x80ee4bc 0x80c3c91 0x80c6b43 0x80c1fd9 0x80c1686
vous pouvez trouver où s'est terminé mysqld
en exécutant ce qui suit :
Copiez les nombres précédents dans un fichier,
mysqld.stack
par exemple.
créez un fichier symbolique pour le serveur
mysqld
:
nm -n libexec/mysqld > /tmp/mysqld.sym
Notez que beaucoup de distributions binaires MySQL
fournissent le fichier précédent, nommé
mysqld.sym.gz
. Dans ce cas, décompressez
le en faisant :
gunzip < bin/mysqld.sym.gz > /tmp/mysqld.sym
Exécutez resolve_stack_dump -s /tmp/mysqld.sym -n
mysqld.stack
.
Cela affichera l'endroit où mysqld
a
planté. Si cela ne vous aide pas à trouver pourquoi
mysqld
a planté, vous devez créer un
rapport de bogue et y inclure le résultat de la commande
précédente.
Notez toutefois que dans la plupart de cas le fait de
n'avoir que le tra¸age de la pile ne nous aidera pas à
trouver d'où vient le problème. Pour être capable de
trouver le bogue, ou fournir une parade, nous aurons besoin
dans la plupart des cas, nous aurons besoin de connaître la
requête qui a fait planter mysqld
et une
batterie de tests pour que nous puissions reproduire le
problème ! See Section 1.4.1.3, « Comment rapporter un bogue ou un problème ».
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.