Depurando Arquivos Principais Gerados na Caixa do Cliente

Recebemos arquivos principais do nosso software na caixa do Cliente. Infelizmente, porque sempre compilamos com -O2sem símbolos de depuração que levaram a situações em que não conseguimos descobrir por que ele estava travando, modificamos as construções e agora elas geram -g e -O2 juntas. Em seguida, aconselhamos o Cliente a executar um binário -g para que seja mais fácil depurá-lo.

Eu tenho algumas perguntas:

O que acontece quando um arquivo principal é gerado a partir de uma distribuição Linux diferente da que estamos executando no Dev? O rastreamento de pilha é significativo?Existem bons livros para depuração no Linux ou no Solaris? Algo exemplo orientado seria ótimo. Eu estou procurando exemplos da vida real de descobrir por que uma rotina caiu e como o autor chegou a uma solução. Algo mais no nível intermediário a avançado seria bom, já que estou fazendo isso há algum tempo. Alguma montagem seria boa também.

Aqui está um exemplo de uma falha que exige que digamos ao cliente para obter um -g ver. do binário:

Program terminated with signal 11, Segmentation fault.
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) where
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x00454ff1 in select () from /lib/libc.so.6
...
<omitted frames>

O ideal é que eu gostaria de descobrir por que exatamente o aplicativo falhou - suspeito que seja corrupção de memória, mas não tenho 100% de certeza.

Depuração remota é estritamente proibida.

obrigado

questionAnswers(4)

yourAnswerToTheQuestion