Pesquisar

11.9. Compiladores e ferramentas de desenvolvimento

download PDF

Funções sintéticas geradas pelo GCC confundem SystemTap

A otimização do GCC pode gerar funções sintéticas para cópias parcialmente simplificadas de outras funções. Ferramentas como SystemTap e GDB não podem distinguir estas funções sintéticas das funções reais. Como conseqüência, o SystemTap coloca sondas em pontos de entrada de funções sintéticas e reais e, assim, registra múltiplos acertos de sondas para uma única chamada de função real.

Para contornar este problema, modifique os scripts SystemTap para detectar a recorrência e evitar a colocação de sondas relacionadas a funções parciais simplificadas.

Este roteiro de exemplo

sonda kernel.function({\i1}"can_nice}").call {\i}

pode ser modificado desta forma:

global in_can_nice%

probe kernel.function("can_nice").call {
  in_can_nice[tid()] ++;
  if (in_can_nice[tid()] > 1) { next }
  /* code for real probe handler */
}

probe kernel.function("can_nice").return {
  in_can_nice[tid()] --;
}

Observe que este roteiro de exemplo não considera todos os cenários possíveis, tais como a falta de kprobes ou kretprobes, ou a verdadeira recursividade pretendida.

(BZ#1169184)

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.