Qual processo escreveu para qual endereço de memória? [fechadas]

2

Recentemente, tenho visto uma grande variedade de falhas relacionadas à memória no trabalho (aplicativos C ++ no Ubuntu 14.04). Nossos aplicativos usam uma biblioteca própria de terceiros para fazer interface com dados em tempo real e são altamente multiencadeados. Os erros cuspidos pela glibc foram "double free ou corruption" e "detected corrupted double-linked list" sob várias circunstâncias. Os núcleos recuperados destes mostram falhas que ocorrem tanto no código de terceiros (mais freqüentemente) quanto no nosso próprio código (menos freqüentemente). A característica unificadora é que cada falha corresponde a um new / malloc ou a delete / free .

Infelizmente, há muito pouco espaço para um depurador nesse ambiente. Os aplicativos são altamente sensíveis à velocidade e os dados de entrada e as circunstâncias de operação só podem ser aproximados ao tentar reproduzir uma falha, porque tudo no ambiente é em tempo real.

Dito isto, minha pergunta é a seguinte: que utilidades existem que possam iluminar exatamente quais partes de quais processos estão tocando a memória que não deveriam ser? Como as falhas não podem ser reproduzidas de forma confiável, minha única opção processual é capturar dados e examiná-los depois que uma falha ocorreu. Para esse fim, eu encontrei OProfile e Sysprof , mas não tenho certeza se ambos são ferramentas adequadas para a tarefa.

Peço desculpas pela imprecisão da pergunta e agradeço antecipadamente por qualquer orientação sobre esse assunto.

    
por musasabi 08.07.2015 / 16:56

0 respostas