usando Valgrind de compilação cruzada

12

Fiz o download das fontes do tronco Valgrind e o construí para uso em um sistema Linux embutido (Montavista Linux) alimentado por um ARM926 (arquitetura ARMv5t). Tudo correu bem até que eu tentei executá-lo para verificar algum aplicativo que fiz; Valgrind me diz:

"valgrind: falha ao iniciar a ferramenta 'memcheck' para a plataforma 'arm-linux': Esse arquivo ou diretório não existe".

Tentar executar qualquer outra ferramenta dá a mesma mensagem. Para o make install , usei a opção --prefix apontando para o sistema de arquivos do sistema incorporado que é montado através do NFS (por exemplo --prefix = / home / NFS_mounted / opt / valgrind). Eu verifiquei o local da instalação e o diretório lib contém as ferramentas adequadas; Também verifiquei o arquivo pkgconfig correspondente para Valgrind e parece que está tudo bem, então estou meio sem noção no momento e não consigo descobrir o que está acontecendo de errado. 2 perguntas:

  1. É correto usar / instalar um Valgrind de compilação cruzada como esse? Talvez eu esteja fazendo algo errado em relação à instalação, ou talvez exista algo que esteja faltando no sistema host (como gdb / gdbserver).
  2. Alguém já tentou executá-lo em arquiteturas ARM? Estou ciente de que o suporte é relativamente recente, por isso estou me perguntando se poderia obter resultados decentes.
celavek
fonte

Respostas:

15

Execute este comando no seu dispositivo de destino

export VALGRIND_LIB=~/valgrind/lib/valgrind/

onde ./valgrindestá o caminho do diretório instalado (fornecido em ./configure)

bhargav
fonte
4

O problema é que 'valgrind' está procurando um executável diferente para executar a verificação real. Ele usa o caminho de instalação especificado quando você o configurou, que não é o mesmo caminho que o destino.

Você deve poder confirmar isso criando um link simbólico / home / NFS_mounted no seu destino que aponte para '/'.

Kristof Provost
fonte
Como ele procura esse caminho? O pkgconfig contém o caminho de destino correto, de onde ele tenta levá-lo?
Celavek 6/09/10
Eu acho que está compilado. O script ./configure gera um arquivo de cabeçalho config.h, que deve conter o caminho do prefixo.
Kristof Provost
2

Coloque em VALGRIND_LIB o diretório pai do diretório amd64-linux. Por exemplo:

export VALGRIND_LIB=/u/gallinar/downloaded/valgrind-3.2.3/.in_place

funcionou para mim hoje :).

Hemant
fonte
Estou com saudades .in_placeda pasta.
ArmenB
0

VALGRIND_LIB precisa estar apontando para a pasta que possui a ferramenta memcheck e outras bibliotecas dependentes x compiladas

DERRIC LYNS
fonte