Na maioria dos sistemas você também pode iniciar o
mysqld
a partir do gdb
para obter mais informações se o mysqld
falhar.
Com uma versão antiga do gdb
no Linux você
deve usar run --one-thread
se você quiser
estar apto a depurar a thread mysqld
. Neste
caso você só pode ter uma thread ativa por vez. Nós
recomendamos que você atualize para gdb 5.1 ASAP já que a
depuração da thread funciona muito melhor com esta versão!
Ao executar o mysqld
com gdb, você deve
disabilitar a pilha de rastreamento com
--skip-stack-trace
para estar apto a conseguir
segmentation fault com gdb.
É muito difícil depurar o MySQL no gdb
se
você fizer muitas conexões o tempo todo já que
gdb
não libera a memória para threads
antigas. Você pode evitar este problema iniciando
mysqld
com -O thread_cache_size=
'max_connections +1'
. Na maioria dos casos só o uso
de -O thread_cache_size=5'
já ajuda muito!
Se você quiser um tiver um core dump no Linux quando o
mysqld
morre com um sinal SIGSEGV, você pode
iniciar o mysqld
com a opção
--core-file
. Este arquivo core pode ser usado
para fazer um rastreamento que pode lhe ajudar a descobrir
porque o mysqld
morreu:
shell> gdb mysqld core
gdb> backtrace full
gdb> exit
See Secção A.4.1, “O Que Fazer Se o MySQL Continua Falhando”.
Se você estiver usando gdb 4.17.x ou acima no Linux, você deve
instalar um arquivo .gdb
, com a seguinte
informação, em seu diretório atual:
set print sevenbit off handle SIGUSR1 nostop noprint handle SIGUSR2 nostop noprint handle SIGWAITING nostop noprint handle SIGLWP nostop noprint handle SIGPIPE nostop handle SIGALRM nostop handle SIGHUP nostop handle SIGTERM nostop noprint
Se você tiver problemas depurando threads com gdb, você deve fazer o download do gdb 5.x e experimentá-lo. A nova versão do gdb tem um tratamento de threads bem melhorado.
Aqui está um exemplo de como depurar o mysqld:
shell> gdb /usr/local/libexec/mysqld
gdb> run
...
backtrace full # Faça isto quando o mysqld falhar
Inclua a saída acima e uma email gerado com
mysqlbug
e envie-o para lista de email do
MySQL. See Secção 1.7.1.1, “As Listas de Discussão do MySQL”.
Se o mysqld
travar você pode usar algumas
ferramentas de sistema como strace
ou
/usr/proc/bin/pstack
para exeminar onde
mysqld
travou.
strace /tmp/log libexec/mysqld
Se você estiver usando a interface Perl DBI
,
você pode habilitar a informação de depuação usando o
método trace
ou definindo a variável de
ambiente DBI_TRACE
. See
Secção 12.5.2, “A interface DBI
”.
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.