2014-11-27 2 views
1

gcov 툴을 사용하여 팔 기반 보드의 드라이버를 테스트해야합니다. gcov가 x86 아키텍처에서 사용되면 프로그램을 실행 한 후 .gcda 파일이 생성됩니다. 그러나 팔 기반 보드의 경우 .gcda 파일이 생성되지 않습니다. 그래서, gcov 도구를 사용할 수 없습니다. 제 질문은 크로스 컴파일에서 gcov 도구를 사용하는 방법입니다.? 사전에 감사드립니다.크로스 컴파일러에서 gcov를 사용하는 방법은 무엇입니까?

+0

[이 주제에 대한 매뉴얼을 읽으십시오.] (https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Cross-profiling.html#Cross-profiling)를 참조하십시오. 질문. 버전을 지정하는 것이 좋습니다. –

+0

귀하의 질문은 이미 오래된 토론에 대한 답변 : [임베디드에 코드 검사를 수행하는 방법] [1] [1] : http://stackoverflow.com/questions/8565031/how-to-do -code-coverage-on-embedded – FlorianB

답변

0

gcov 코드/데이터 구조는 호스트 파일 시스템에 연결되며 교차 컴파일러 도구 체인에는이 동작을 변경하는 데 필요한 포트 또는 구성이 없습니다. 오브젝트 파일이 ~/my-project/abc.o이면 인스트루먼트 된 코드로 작성/업데이트 된 gcov 인 메모리 데이터 구조는 ~/my-project/abc.gcda을 가리키며이 모든 경로는 호스트 시스템에 있습니다. 원격 시스템 (ARM 보드의 경우)에서 실행되는 계측 코드는이 경로에 액세스 할 수 없으므로 ARM 보드 케이스에 .gcda 파일이 표시되지 않는 주된 이유입니다.

위의 문제를 해결하기 위해 .gcda 개의 파일을 가져 오는 일반적인 방법은 https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/을 참조하십시오. 이 기사에서는 gcov 함수를 분해하고 gcov 데이터 구조를 on-host .gcda 파일에 수동으로 덤프하는 해킹 방법을 제시합니다.

필자는 위에서 언급 한 블로그를 사용하여 ARM 프로젝트에 대한 코드 적용 범위를 작성했습니다. 하나; 나는 toolchain (GNU arm toolchain 버전은 2016 년 11 월에 사용 가능)의 gcc 버그에 대한 또 다른 이슈를 직면했다. 여기서 gcov 함수를 깰 수없고 위의 블로그에서 언급 한 프로세스를 완료 할 수 없다. 관련 gcov 함수는 무한 루프로 멈 춥니 다. 버그가 수정되었는지 잘 모르기 때문에이 문제가 발생할 수도 있고 그렇지 않을 수도 있습니다. 이 문제를 안다면, 내 블로그 https://technfoblog.wordpress.com/2016/11/05/code-coverage-using-eclipse-gnu-arm-toolchain-and-gcov-for-embedded-systems/에서 해결책을 찾을 수 있습니다.

+1

잠재적 인 솔루션에 대한 링크는 언제나 환영하지만, 링크 주위에 컨텍스트를 추가하여 동료 사용자가 그것이 무엇이며 왜 존재하는지 알 수 있도록하십시오. 대상 사이트에 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 중요한 링크의 가장 중요한 부분을 항상 인용하십시오. – Marcs

관련 문제