2012-09-17 4 views
14

은 그냥 다음과 같은 오류가 실행 gcov를 얻으려고 노력 : 나는 필요 gcov의 파일을 생성하는 그 소리/profile_rt을 사용하고gcov 메모리가 부족합니다/일치하지 않는 버전입니까?

$ gcov src/main.c -o build 
build/main.gcno:version '404*', prefer '407*' 

gcov: out of memory allocating 14819216480 bytes after a total of 135168 bytes 

, 나는 그게 함께 할 수있는 뭔가가있을 있으리라 믿고있어. 내 컴퓨터에서 작동하고있어, 어떻게 든 고칠 수 있다고 가정합니다.

답변

16

방금 ​​컴퓨터에서 같은 문제가 발생했습니다.

gcov의 버전과 사용하는 컴파일러가 일치하는지 확인하십시오.

g ++ - 4.7로 컴파일 할 때이 정확한 문제가 있었으며 gcov 4.6이있었습니다.

내 컴퓨터에 sudo apt-get install ggcov 최신 버전이 있습니다. 나는 올바른 장소에 gcov 지점을 만들기 위해 sudo ln -sf /usr/bin/gcov-4.7 /usr/bin/gcov해야만했다.

+1

도움을 주셔서 감사합니다! 나는 단순히 gcov 대신 gcov-4.7을 실행하여 문제를 해결했다. 동기 부여가된다면 좀 더 우아한 접근법이 update-alternatives를 사용하는 것을 포함한다고 생각합니다. –

+0

감사합니다. Anthony! 그리고'ln -sf'는 오래된 gcov를 자동으로 제거 할 수 있습니다. –

+0

감사합니다. @EricZ. 업데이트 날짜 : D –

5

방금 ​​동일한 문제가 있었으며 올바른 버전이 설치되었습니다. 내 경우의 해결책 : 컴파일 할 하위 디렉토리에서 *.gcda 개의 파일을 모두 제거하십시오. 내 make clean에서 덮어 쓰지 않았습니다.

7

내 문제는 내가 그래서 새로운 컴파일러를 사용할 수 있음을 gccg++ 업데이트이었다, 그러나 "gcov"또는 "lcov는"gcov의 이전 컴파일러 버전을 집어 실행 의미 gcov 버전을 업데이트하는 것을 잊었다.

따라서 기본적으로 g++ --versiongcov --version을 실행하면 동일한 버전 번호가 생성되어야합니다. 다른 것들은 매우 잘못 될 것입니다.

다음은 필자가 컴파일러 버전을 어떻게 업데이트했는지, 마지막 줄은 제대로 작동하기 위해 누락되었습니다.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 90 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 90 
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.9 90