2010-03-25 3 views
0

Mac에서 Shark-profiling에 관한 질문이 있습니다.Mac에서 Shark를 사용하여 쉘 스크립트의 루프에서 C 프로그램을 프로파일하는 방법?

말은 내가 함께 컴파일 된 C 프로그램이있는 경우 :

gcc -o mycprog mycprog.c -g -pg 

를 또한 내가 좋아하는 쉘 스크립트 뭔가가 : 나는 모든 파일에 대해 평균 성능을 프로파일 링 할 필요가

for file in ($SomeDirectory) 
do 
    mycprog $file 
done 

을 in $ SomeDirectory.

어디에서 shark -i 명령을 사용해야합니까? 감사.

답변

0

이 여러 가지 이유로 좋은 방법이 아니다 - 그것은 명령 줄에서 모든 파일을 처리 할 수 ​​있도록 이상적으로 당신은 당신이 하나 개의 실행에서 모든 것을 할 수 있습니다, 프로그램의 외부 루프를 수정해야합니다 :

$ shark -i 
$ mycprog $SomeDirectory/* 

그렇게 할 수 없다면 시스템 전체 프로파일 링을 위해 상어 구성을 설정하고 bash 루프 전에 프로파일 링을 시작한 다음 프로파일 링을 중지해야합니다. 프로필을 Shark에서 볼 때 관심이없는 프로세스는 걸러 낼 수 있습니다.

먼저 Shark (GUI 앱)을 열고 구성을 설정하고 원격 제어 (Sampling = >Programmatic). Time ProfileEverything을 선택하십시오. 명령 줄에서 다음

: 답장을 보내

$ chudRemoteCtrl -s "mycprog" 
$ sleep 1 
$ for f in $SomeDirectory/* 
$ do 
$  mycprog $SomeDirectory/$f 
$ done 
$ chudRemoteCtrl -e 
+0

감사합니다. 내 c- 프로그램의 동작을 수정하는 것은 매우 어렵습니다. –

+0

@Peter : 그렇게 힘들지 않아야합니다. 추가 할 필요가있는 것은 command line의 각 파일에 대한 코드를 반복적으로 실행할 main()의 여분의 루프입니다. –

+0

답장을 보내 주셔서 감사합니다. 나는 네가하는 말을 이해한다. 여기에 게시 한 예는 매우 간단한 예입니다. 쉘 스크립트의 for 루프에는 많은 조건이 있으므로 c 프로그램의 소스 코드를 변경하는 것은 매우 어렵습니다. 상어 프로그램 제어 또는 다른 것을 사용하는 솔루션이 있는지 알고 싶습니다. 여기 또 다른 빠른 질문 : 사용 : shark -i mycprog -o mycprogsessionname -o 옵션이 전혀 작동하지 않습니다. 이는 매우 이상합니다. 나는 많은 것을 봤지만, 성공하지 못했다. –