크로스 컴파일된 Valgrind 사용

크로스 컴파일된 Valgrind 사용

Valgrind 트렁크에서 소스 코드를 다운로드하여 ARM926(ARMv5t 아키텍처)을 기반으로 하는 임베디드 Linux 시스템(Montavista Linux)에서 사용하도록 빌드했습니다. 내가 만든 일부 앱을 확인하기 위해 실행하기 전까지는 모든 것이 잘 진행되고 있었습니다. Walgrind는 다음과 같이 말했습니다.

"valgrind: 'arm-linux' 플랫폼에 대해 'memcheck' 도구를 시작할 수 없습니다. 해당 파일이나 디렉터리가 없습니다."

다른 도구를 실행하려고 하면 동일한 메시지가 나타납니다. ~을 위한설치하기 위해서--prefix 옵션을 사용하여 NFS를 통해 마운트된 임베디드 시스템의 파일 시스템을 가리킵니다(예: --prefix=/home/NFS_mounted/opt/valgrind). 설치 위치를 확인해보니도서관해당 디렉토리에는 적절한 도구가 포함되어 있습니다. Valgrind에 해당하는 pkgconfig 파일도 확인한 결과 괜찮은 것 같아서 이제 무엇이 잘못되었는지 파악하기가 어렵습니다. 질문 2개:

  1. 이렇게 크로스 컴파일된 Valgrind를 사용/설치하는 것이 맞나요? 설정에 문제가 있을 수도 있고 호스트 시스템에 누락된 부분(gdb/gdbserver 등)이 있을 수도 있습니다.
  2. ARM 아키텍처에서 실행해 본 사람이 있습니까? 최근에야 지원이 이루어진 것으로 알고 있는데 과연 괜찮은 결과를 얻을 수 있을지 궁금합니다.

답변1

대상 장치에서 이 명령을 실행하세요.

export VALGRIND_LIB=~/valgrind/lib/valgrind/

./valgrind설치 디렉터리 경로는 어디에 있습니까( 에 제공됨 ./configure)

답변2

문제는 "valgrind"가 실제 검사를 실행하기 위해 다른 실행 파일을 찾고 있다는 것입니다. 구성 시 지정한 설치 경로를 사용하며, 이는 대상의 경로와 다릅니다.

대상에서 "/"를 가리키는 심볼릭 링크 /home/NFS_mounted를 생성하여 이를 확인할 수 있습니다.

답변3

amd64-linux 디렉터리의 상위 디렉터리에 VALGRIND_LIB를 배치합니다. 예를 들어:

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

오늘 나를 위해 일했습니다 :).

답변4

제안된 솔루션 중 어느 것도 효과가 없었으므로 모든 선택적 모듈을 활성화했습니다.

./configure --enable-only64bit --enable-inner --enable-lto --enable-tls

보라, 그것은 효과가 있었다.

관련 정보