2013-07-11 5 views
-1

큰 코드의 C++ 코드베이스에서 Shiny을 사용하고 싶지만 내 소스에 필요한 PROFILE_FUNC() 호출을 추가하지는 않을 것입니다. 각 소스 파일에 대해 정규 표현식을 사용하여 함수 정의를 검색하고 여는 대괄호 바로 뒤에 매크로 호출을 추가하고 그 결과를 g ++에 파이프하는 스크립트를 작성하는 것은 쉽습니다. 그러나 그것은 매우 명백한 소스 코드 도구 사용 사례로 보입니다. 그래서 많은 사람들이 이미 더 나은 해결책을 찾지 못했다고 생각합니다.간단한 C++ 소스 계측?

안타깝게도 LLVM/clang 계측 및 이상한 연구 도구에 대한 참조 만 찾을 수 있습니다. 이는 비교적 간단한 문제에 대한 지나치게 복잡한 해결책처럼 보입니다. 사실, 컴파일 직전에 C/C++ 코드에 대한 간단한 자동 코드 편집을 수행하는 직접적인 방법이없는 것처럼 보입니다.

그렇습니까? 또는 나는 무엇인가 놓치고 있냐?

업데이트 : "C++ 코드베이스"는 Android에 포팅하는 기본 응용 프로그램입니다. 그래서 gprof (안드로이드에서는 사용 가능하지 않음), Valgrind (이전 버전의 NDK가 필요합니다) 또는 android-ndk-profiler (Android 액티비티로로드 된 동적 라이브러리 용)를 사용할 수 없습니다 , Java 또는 원시, 일반 실행 파일이 아님). 따라서 내 모습을 샤이닝으로.

업데이트 2 : 이전 클레임에도 불구하고 사실 build Valgrind on Android NDK r8e으로 관리되었으므로 Shiny 대신에 사용하도록 합의했습니다. 그러나 나는 여전히 원래 질문이 유효하다고 생각한다 : C/C++ 소스 파일에 간단한 컴파일 타임 편집을하기위한 직접적인 도구가 없다 - 스테로이드의 매크로 전처리 기일까?

+0

gprof은 안드로이드에서 사용할 수있는 결과를 분석 할 수있는 gprof 사용

http://code.google.com/p/android-ndk-profiler/

을 프로파일 안드로이드 NDK 프로파일을 사용할 수 있습니다 - 플랫폼 소스 - 예 : Mac OS /prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6/bin/arm-eabi-gprof – gheese

+0

gprof 사후 도구, 예. 그러나 실행 파일에 연결하고 프로필 덤프를 생성하는 gprof 라이브러리가 없으면 어떤 점이 좋을까요? – xperroni

답변

0

gprof 또는 valgrind으로 간주 할 수 있습니다. 메모리가 작동하면 gprof는 계측을 사용하고 valgrind는 샘플링 기반 프로파일 러입니다. 둘 다 소스 코드에 주석을 달 것을 요구하지 않습니다.

+0

문제는이 코드가 실제로 Android로 포팅하는 네이티브 C++ 응용 프로그램이라는 것입니다. 내가 아는 한 gprof는 Android에서 사용할 수 없으며 Valgrind는 NDK r6 (r8e를 사용하고 있음)이 필요합니다. – xperroni

0

당신은 C/C++ 코드 여기에 더 많은 정보를 원하시면 당신은

+0

안타깝게도 android ndk 프로파일 러는 일반 실행 파일이 아닌 원시 * 라이브러리 * 만 프로파일 링 할 수 있습니다. 자세한 내용은 여기를 참조하십시오. http://code.google.com/p/android-ndk-profiler/issues/detail?id=1&can=1&q=executable – xperroni