파이썬에서 라이브러리 코드를 호출하는 예제부터 시작해 보겠습니다. 파이썬 프로세스에서 호출 된 C 라이브러리의 적용 범위 측정
이
은 (라이브러리libfoolib
로 컴파일) 라이브러리 코드 :
#include <stdio.h>
void bar()
{
printf("bar\n");
}
void foo()
{
printf("foo\n");
}
그리고이 그것을 호출하는 파이썬 코드 :
#!/usr/bin/python25
import sys
import libfoolib
import processing
def callFoo():
libfoolib.foo()
libfoolib.bar()
process = processing.Process(target=callFoo)
process.start()
라이브러리가 -ftest-coverage
및 -fprofile-arcs
컴파일러로 컴파일 제대로 gcno
파일을 생성하고 파이썬 코드가 실행될 때 gcda
파일도 생성됩니다. 문제는 파이썬의 분기 전에 호출 된 bar
함수에 대한 적용 범위 번호 만 포함한다는 것입니다. foo
도 파이썬의 처리 호출 외부에서 호출 되었다면 모두 좋다.
이
내가 생산 범위의 데이터에 대한gcov
도구를 실행할 때 내가 무엇을 얻을 : "내
foo
범위 데이터"
내가이이 문제
-: 0:Source:/codeCoverageTests/pythonSIP/foo.c
-: 0:Graph:debug/CMakeFiles/fooLib.dir/foo.c.gcno
-: 0:Data:debug/CMakeFiles/fooLib.dir/foo.c.gcda
-: 0:Runs:4
-: 0:Programs:1
-: 1:#include <stdio.h>
-: 2:
-: 3:void bar()
function bar called 4 returned 100% blocks executed 100%
4: 4:{
4: 5: printf("bar\n");
call 0 returned 100%
4: 6:}
-: 7:
-: 8:void foo()
function foo called 0 returned 0% blocks executed 0%
#####: 9:{
#####: 10: printf("foo\n");
call 0 never executed
#####: 11:}
-: 12:
환경에 대한 좀 더 세부 정보 :
- 에 CentOS 5.4
- GCC : 4.1.2 20080704 (레드햇 4.1.2-46)
- CMake 구축 (버전 2.8.0) C에
- 파이썬 2.5
- 파이썬