2012-06-23 5 views
5

가 나는 2009 년 중반 맥북 프로와 2012 맥북 프로가 내가 DTrace를 (꽤 놀라운 도구)를 학습하는 과정에서 오전 발사하지 않는다. 새 2012 MBP에서 집계를 계산할 때 집계가 인쇄되지 않습니다.의 DTrace END 프로브는 결코

usbmuxd               1 
    GrowlHelperApp             2 
    imklaunchagent             2 
    installd               2 
    stackshot               2 
    ... 

2012 MBP 아무것도 표시되지 않습니다 : 내 2009 년 중반 MBP에

sudo dtrace -n 'syscall:::entry { @[execname] = count() }' 

, 그것은 뭔가를 보여줍니다.

은 내가 END 프로브도과 같이 해고 있는지 확인하기 위해 존재와 END 프로브에서의 printf를 추가 :

BEGIN 
{ 
    printf("Hi!"); 
} 

syscall:::entry 
{ 
    @[execname] = count(); 
} 

END 
{ 
    printf("Bye!") 
} 
MBP 모두 프로브 해고 중반 2009 년

및 인쇄 및 2012 MBP에 만 BEGIN 프로브가 발사되었습니다. END는 결코 해고되지 않았습니다.

두 Mbps의 라이온 10.7.3를 실행하고 있습니다. 다음에 무엇을 시도해야할지 모르겠습니다. 지금 당장 생각해야 할 유일한 차이점은 2012 MBP에 개발자 명령 줄 도구를 설치하지 않았다는 것입니다. 그것은 나에게 의미가 없으며 어둠 속에서 한 발입니다.

도움이나 아이디어를 제공해 주시면 감사하겠습니다. 감사.

=============이 [사용 루트 계정]

==================== 그래서 내가 활성화 루트 계정과 명령을 전혀 성공

sudo dtrace -n 'syscall:::entry { @[execname] = count() }' 

를 재 - 실행하지만

su 
dtrace -n 'syscall:::entry { @[execname] = count() }' 

을 할 경우 작동한다!

=============는 =========================== [INT -s 죽] ==

조금 더 실험했습니다. 내가 실행하면 :

sudo kill -s INT [pid of dtrace] 

모든 것이 작동하고 출력이 표시됩니다.

나는 실행하는 경우 :

sudo kill -s INT [pid of sudo running dtrace] 

이 또한 작품!

그러나 터미널에서 control-c를 사용하면 출력이 표시되지 않습니다.

제어-C와 -s INT를 죽일의 차이점은 무엇입니까?

+1

시스템에서 [루트] (http://support.apple.com/kb/ht1528)를 사용하도록 설정하십시오. – Kentzo

답변

5

나는 리눅스에서도 그렇게 보였다. DTrace를가 sudo는에 의해 만들어지는 경우

Ctrl-C를 작동하지 않습니다.

당신 sudo는 -i 경우 루트 쉘을 한 후 작동의 DTrace를 호출합니다.

+0

나는 두 맥 사이에 무엇이 바뀌 었는지 아직도 확신하지 못합니다. 그러나 이것은 작동하며 프로세스를 죽이는 것보다 쉽습니다. sudo -s도 시도해 보았습니다.감사합니다 – SargeATM

+0

아마 sudo의 버전. 나는 당신의 오래된 macosx에서 sudo 버전이 무엇인지 궁금합니다. – ithkuil

+0

이것은 OSX 10.8에서 도움이되었습니다. 감사! –

관련 문제