gcov 툴을 사용하여 팔 기반 보드의 드라이버를 테스트해야합니다. gcov가 x86 아키텍처에서 사용되면 프로그램을 실행 한 후 .gcda 파일이 생성됩니다. 그러나 팔 기반 보드의 경우 .gcda 파일이 생성되지 않습니다. 그래서, gcov 도구를 사용할 수 없습니다. 제 질문은 크로스 컴파일에서 gcov 도구를 사용하는 방법입니다.? 사전에 감사드립니다.크로스 컴파일러에서 gcov를 사용하는 방법은 무엇입니까?
답변
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/에서 해결책을 찾을 수 있습니다.
잠재적 인 솔루션에 대한 링크는 언제나 환영하지만, 링크 주위에 컨텍스트를 추가하여 동료 사용자가 그것이 무엇이며 왜 존재하는지 알 수 있도록하십시오. 대상 사이트에 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 중요한 링크의 가장 중요한 부분을 항상 인용하십시오. – Marcs
- 1. 밉스 크로스 컴파일러에서 crt1.o 오류가 발생했습니다.
- 2. iPhone SDK에서 코드 범위 분석을 위해 gcov를 설정하는 방법은 무엇입니까?
- 3. FileSystems를 사용하는 가장 좋은 방법은 무엇입니까?
- 4. clang 컴파일러에서 경고를 처리하는 방법은 무엇입니까?
- 5. 함수가 컴파일러에서 사용 가능한지 확인하는 방법은 무엇입니까?
- 6. gcc 컴파일러에서 cppcheck 도구를 작성하는 방법은 무엇입니까?
- 7. Java 컴파일러에서 메서드가 인라인되지 않도록하는 방법은 무엇입니까?
- 8. 컴파일러에서 생성 한 코드를 분해하는 방법은 무엇입니까?
- 9. Windows에서 GCov를 사용할 수 있습니까?
- 10. 내가 옵션 -a와 gcov를 사용하고
- 11. 동일한 언어로 여러 컴파일러에서 CMake 사용하기
- 12. 하나의 쿼리에서 내부 조인과 크로스 조인을 사용하는 방법은 무엇입니까?
- 13. 언어와 컴파일러에서 사용할 수있는 C++ POSIX OO 크로스 플랫폼 라이브러리
- 14. PostScript를 사용하는 크로스 해칭
- 15. 설치된 코코아 애플리케이션에서 Gcov를 어떻게 실행합니까?
- 16. VS C++ 컴파일러에서 사용하는 다른 프로세서 레지스터는 무엇입니까?
- 17. Nvidia의 NVCC 컴파일러에서 여러 "아치"플래그를 사용하는 목적은 무엇입니까?
- 18. 크로스 플랫폼 모바일 앱을 만드는 방법은 무엇입니까?
- 19. 크로스 탭에서 다음 작업을 수행하는 방법은 무엇입니까?
- 20. 다양한 컴파일러에서 Delphi 루트 디렉토리를 계산하는 방법은 무엇입니까?
- 21. 자바 컴파일러에서 상수 폴딩이란 무엇입니까?
- 22. 일반적으로 컴파일러에서 파일을 읽는 가장 좋은 방법은 무엇입니까?
- 23. iPhone : 어떻게 gcov를 사용할 수 있습니까?
- 24. CppUnit을 사용하여 OSX에서 * .gcov를 만들 수 없습니다
- 25. 다른 컴파일러에서 dll 가져 오기
- 26. 프로토콜을 사용하는 크로스 클래스 통신
- 27. Sass를 사용하는 크로스 브라우저 mixin
- 28. 크로스 도메인에서 SignalR을 사용하는 방법
- 29. easyXDM을 사용하는 크로스 도메인 게시물
- 30. SOLR 크로스 서버는 우리가 사용하는
[이 주제에 대한 매뉴얼을 읽으십시오.] (https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Cross-profiling.html#Cross-profiling)를 참조하십시오. 질문. 버전을 지정하는 것이 좋습니다. –
귀하의 질문은 이미 오래된 토론에 대한 답변 : [임베디드에 코드 검사를 수행하는 방법] [1] [1] : http://stackoverflow.com/questions/8565031/how-to-do -code-coverage-on-embedded – FlorianB