Ferramenta para rastrear chamadas de bibliotecas no Linux / ARM

8

Estou procurando uma ferramenta que permita rastrear chamadas para funções em bibliotecas compartilhadas no Linux / ARM. Basicamente, eu quero ser capaz de especificar uma linha de comando e deixar esta ferramenta produzir um registro de funções de biblioteca chamadas e os argumentos passados. Eu imagino que alguma forma de função de hooking possa ser usada para isso.

Estou ciente do ltrace , que fornece exatamente a funcionalidade de que necessito. No entanto, ltrace não funciona para mim assim:

  • geralmente segfaults ao rastrear programas mais complexos.
  • é muito lento.

Estou procurando uma alternativa mais robusta. A velocidade é boa, mas não a minha principal preocupação. Primeiramente, gostaria de ter um meio de rastrear chamadas de bibliotecas que possam analisar qualquer programa (não evasivo).

Sysdig também não está funcionando no ARM, e a porta do dtrace ainda está trabalhando em beta apenas no NetBSD.

Alguém está ciente de tal ferramenta em um estado utilizável?

    
por j0ker 11.09.2015 / 23:51

1 resposta

1

Você examinou LTTng ? É uma estrutura de rastreio kernelspace / userspace que funciona em várias arquiteturas, incluindo o ARM.

Você pode configurar o rastreamento do código do espaço do usuário com LTTng-UST . Mas você teria que recompilar as bibliotecas compartilhadas que deseja rastrear, com seus pontos de rastreio LTTng adicionados.

Aqui está um guia dos documentos oficiais sobre como configurar o rastreamento do espaço do usuário: Rastreando seu próprio aplicativo de usuário

Eu não sei se isso seria útil no seu caso, mas há também um thread de estouro de pilha na compilação / instalação de lttng em plataformas embarcadas (incluindo o ARM): Como faço para construir e implantar o LTTng em um sistema Linux embarcado?

    
por 15.12.2015 / 10:00