Pergunta

Quais são as possíveis maneiras de depuração Deadlocking tópicos em um programa de MT, com excepção gdb?

Foi útil?

Solução

Em algumas plataformas ferramentas de detecção de impasse pode ajudá-lo a encontrar já observado e ainda não observado impasses, bem como outros bugs.

No Solaris, tente LockLint .
No Linux, tente Helgrind ou DRD .

Outras dicas

Se você estiver usando POSIX, tente investigar PTHREAD_MUTEX_ERRORCHECK.

Eu sempre investiu algum tempo para escrever ou enxertia em um recurso de registro flexível em projectos em que já trabalhei, e ele sempre valeu a pena em transformar erros difíceis em fáceis. No mínimo, o acondicionamento primitivos em funções ou métodos que log antes e após a exploração, e exibir o objeto que está sendo bloqueado bloqueio e o fio que está fazendo o bloqueio sempre me ajudou a zero em no segmento de ofensa em questão de minutos - assumindo que o problema pode ser reproduzido em todos, é claro.

Carregando o programa sob um depurador é realmente um método muito limitado de determinar o que aconteceu uma vez um processo impasses, já que tudo o que posso lhe dar é um instantâneo de como mal você estragou tudo, em vez de uma explicação passo a passo de como você asneira, que eu acho muito mais útil.

Ou obter o segmento Intel Checker. Trabalho bom.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top