Usando Stack Trace


Em alguns sistemas operacionais, o log de erro irá conter um stack trace se mysqld finalizar inesperadmente. Você pode usá-lo para descobrir onde (e talvez por que) o mysqld finalizou. See "O Log de Erros". Para obter um stack trace, você não deve compilar o mysqld com a opção -fomit-frame-pointer para gcc. Leia Seção E.1.1, "Compilando o MYSQL para Depuração".

Se o arquivo de erro conter algo como o seguinte:

mysqld got signal 11;
The manual section 'Debugging a MariaDB 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

você pode descobrir onde o mysqld finalizou fazendo o seguinte:

  1. Copie os números acima em um arquivo, por exemplo mysqld.stack.
  2. Faça um arquivo de símbolos para o servidor mysqld:
    nm -n libexec/mysqld > /tmp/mysqld.sym
    

    Note que a maioria das distribuições binárias do MariaDB (exceto para o pacotes de 'depuração' onde as informações são incluídas dentro dos binários) já possuem o arquivo acima, chamado mysqld.sym.gz. Neste caso você pode simplesmente desempacotá-lo fazendo:

    gunzip < bin/mysqld.sym.gz > /tmp/mysqld.sym
    
  3. Execute resolve_stack_dump -s /tmp/mysqld.sym -n mysqld.stack.

    Isto exibirá a onde o mysqld finalizou. Se isto não lhe ajuda a descobrir o porque o mysqld morreu, você deve fazer um relato de erro e incluir a saída do comando acima no relatório.

    Note no entanto que na maioria dos casos, termos apenas um stack trace, não nos ajudará a encontrar a razão do problema. Para estarmos apto a localizar o erro ou fornecer um modo de contorná-lo, precisariamos, na maioria dos casos, conhecer a consulta que matou o mysqld e de preferência um caso de teste para que possamos repetir o problema! Leia "Como relatar erros ou problemas".

Retornar