2013-06-01 7 views
9

저는 XCode의 인스트루먼트의 내부 동작을 이해하려고합니다. MacOS에서는 DTrace를 사용하여 모든 종류의 프로파일 링 데이터를 수집 할 수 있습니다. iOS에서도 많은 기능을 제공하지만 DTrace가 iOS에 이식되지 않았다는 내용을 반복적으로 읽었습니다.인스 트루먼 트는 DTrace를 사용할 수 없으면 어떻게 iOS에서 데이터를 수집합니까?

어떻게 작동하나요?

DTrace의 Apple 설명서에서 여기에 대한 내부 작동에 대해 많이 알려주지 않습니다. 그러나 Xcode가 Instruments를 사용하여 내 응용 프로그램을 프로파일 링 할 때 Xcode가이를 다르게 구현 한 것으로 보입니다. 그러면 내 독립 실행 형 DTrace 공급자와 내 코드가 연결될 수 있습니까?

미리 감사드립니다.

/E : 내가 할 수있는 경우에만 아이폰 OS는 시뮬레이터 내에서 실행되는 애플리케이션에 내가

답변

5

... 나의 전 6 개 명성 포인트로이 질문에 현상금 것, 분명히 시뮬레이터는 맥 OS X 프로그램입니다, 그것은 할 수 있습니다 DTrace를 사용하여 시뮬레이터가하는 모든 것을 모니터링하십시오.

iPhone에서 실행되는 iOS 응용 프로그램의 경우 문서에서 어떤 일이 일어나고 있는지 약간의 통찰력을 제공합니다. iOS의 대상 프로세스에 모니터링 코드를로드하는 중일 것입니다 (컴파일 타임에 코드를 추가하거나 런타임에 링크를 추가하여). 또는 추적을 구현하기 위해 대상 프로세스에 대해 iOS에서 실행되는 "기존 디버거"가 있습니다. DTrace를 사용하기위한 커널 레벨 지원이 없다면 그것들은 거의 유일한 옵션입니다.

필자는 Instruments를 한번도 사용해 본 적이 없지만, DTrace 없이는 일반적으로 측정 할 수없는 I/O에 대한 OS 수준의 통계를 수집 할 수 있다는 점이 중요합니다. 내가 사용하지 않았기 때문에 확신 할 수는 없지만 이러한 통계는 감지하기 쉬운 엔트리 포인트 (예 : 특정 대상 프로세스의 I/O 관련 syscalls)에서 I/O를 추적하는 것만 가능합니다. 운영 체제에서 게시하는 다른 iOS 관련 통계 소스. 예를 들어, 많은 시스템 통계는 sysctl을 호출하여 Mac OS X에서 얻을 수 있습니다. 실제로 수집되는 통계에 따라 Instruments는 대부분의 작업을 수행하기 위해 이러한 간단한 카운터를 사용할 수 있습니다.

정말로 답을 찾으려면 DTrace Instruments 자체에서이 문제를 파악하는 것이 재미있는 DTrace 도전이 될 것입니다. 행운을 빌어 요 :-)