나는 이걸 가지고 내 이빨을 물고있어.gcc 컴파일 된 코드 및 ARM Cortex A8 타겟에서 호출 그래프 프로파일 링을 얻는 방법은 무엇입니까?
ARM 보드에서 프로파일 링을해야하고 콜 그래프를 볼 필요가있다. OProfile, Kernel perf 및 Google 성능 도구를 사용해 보았습니다. 모두 잘 작동하지만 콜 그래프 정보를 출력하지 않습니다.
이로 인해 코드가 올바르게 컴파일되지 않는다는 결론을 얻었습니다. 내 C++ 코드를 컴파일 할 때
나는 다음 플래그를 사용 :
을 아치 특정 :
-march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=vfpv3
일반 : (최적화)
-fexceptions -fno-strict-aliasing -D_REENTRANT -Wall -Wextra
디버깅 :
-O2 -g -fno-omit-frame-pointer
I di d 많은 Google 검색 및 관련 주제를 찾았습니다.
- libunwind?
- 난쟁이
- (asynchronous-) 긴장을 풀고 테이블 나는 완전히이 모두 연결하는 방법을 이해하지 못하는 그러나
-mapcs-frame
. 콜 그래프를 얻는 방법에 대한 힌트가 있습니까?
참고 : (Rian의 대답으로 인해) ARM에서 x86-64보다 일부 방법이 더 오래 걸리는 지 알아 보는 데 관심이 있습니다. 다른 플랫폼에서이 작업을 수행하는 것은 도움이되지 않습니다. (비록 두 코드 모두에서 코드를 컴파일하고 x86-64에서 콜 그래프를 작성할 수 있지만).
당신은 당신이 하드 = -mfloat-ABI 컴파일 하시겠습니까? 내가 이해 한 바로는 mfloat-abi = softfp는 여전히 NEON을 사용하지만 기존 바이너리와 더 호환됩니다. mfloat-abi = hard https://wiki.linaro.org/Linaro-arm-hardfloat –
하드 성능을 향상시켜야하며 우리는 전체 배포판을 열심히 구축해야합니다. –
oprofile은 커널에 따라 다릅니다. 프로파일 링을 쉽게하기 위해 커널을 재구성 했습니까? – accuya