Programação Paralela em Arquiteturas Multi-Core/Programação em Pthreads: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Flores (discussão | contribs)
Linha 587:
gcc ... -D_REENTRANT -lpthread -lefence
 
A electric fence vai substituir as funções malloc(), realloc() e free(), por versões que colocam uma proteção após a área alocada. Se vcvocê tentar acessar um byte após o que vcfoi alocoualocado, vc vai tomarocorrer um segmentation SEGFAULTfault na hora.
 
Assim: compile seu programa com electric fence, rode ele no ddd sem colocar breakpoint e ele vai parar no momento exato que seu programa estiver fazendo um acesso inválido. Caso ele pare dentro de uma função da glibc, de info stack e frame X pra ver qual função sua chamou a função que tomouocasionou segfaulto segmentation fault.
 
Atenção: ásàs vezes o electric fence dá SEGFAULTsegmentation fault sozinho. Quando tomar um segmentation fault, veja a saida do programa. Se tiver algo como electric fence: internal error, o electric fence tomou segmentation fault sozinho.
 
O electric fence tem um limite para alocação de memória (cerca de 200MB), se vcvocê ultrapassar esse limite vai receber uma mensagem assim:
 
ElectricFence Exiting: mprotect() failed: Cannot allocate memory