인스트루먼테이션

컴퓨터 프로그래밍에서 인스트루먼테이션(instrumentation)은 오류를 진단하거나 추적 정보를 쓰기 위해 제품의 성능 정도를 모니터하거나 측정하는 기능을 가리킨다. 프로그래머들은 시스템에서 특정한 구성 요소를 모니터링하는 코드 명령어 형태로 인스트루먼테이션을 구현할 수 있다(예를 들면 명령어는 로깅 정보를 모니터에 출력할 수 있다). 애플리케이션이 인스트루먼테이션 코드를 포함할 때 관리 도구를 사용해서 관리될 수 있다. 인스트루먼테이션은 애플리케이션의 성능을 검토할 때 필요하다. 인스트루먼테이션 접근법으로는 두 종류가 있다: 소스 인스트루먼테이션과 바이너리 인스트루먼테이션.

결과 
프로그래밍에서 인스트루먼테이션은 애플리케이션이 다음을 포함하는 능력을 의미한다:
 코드 추적 - 런타임 시에 애플리케이션의 실행에 관한 정보를 메시지로 받는 것.
 디버깅 그리고 (구조화된) 예외 처리 - 개발 하에 애플리케이션의 프로그래밍 오류를 찾아내고 고치는 것.
 프로파일링 - 입력을 가진 상태에서 실행하는 동안 동적으로 프로그램의 행위를 측정하는 것. 이것은 정적 프로그램 분석을 제대로 수행할 수 없을 때 유용한 속성이다.
 성능 카운터 - 애플리케이션의 성능을 추적하게 하는 속성
 컴퓨터 데이터 로깅 - 애플리케이션 실행 중의 주요한 이벤트들의 추적과 로깅.

한계 
인스트루먼테이션은 실행 범위에 의해 한계를 갖는다. 만약 프로그램이 실행 시에 특정한 지점에 도달할 수 없다면, 인스르루먼테이션은 정보를 얻지 못한다. 예를 들면 워드 프로세서 애플리케이션이 인스트루먼트되었지만 사용자가 프린트 기능을 사용하지 않는다면 인스트루먼테이션은 프린트 기능에서만 사용되는 루틴에 대한 정보를 얻지 못한다.

인스트루먼테이션의 몇몇 타입들은 실행 시간을 심하게 끌어올릴 수 있다. 이것은 인스트루먼테이션의 애플리케이션이 문맥을 디버깅하는 것을 제한할 수 있다.

같이 보기 
 명령어 집합 시뮬레이터 - 기계어 코드 수준의 모든 명령어들이 인스트루먼테이션을 제공하는 시뮬레이션
 런타임 인텔리전스
 소프트웨어 성능 분석 - 인스트루먼테이션을 포함한 코드 행위에 대한 모니터링 기술
 하드웨어 퍼포먼스 카운터
 애플리케이션 반응 기법 -C와 JAVA를 위한 표준화된 인스트루먼테이션 API

각주 

 Introduction to Instrumentation and Tracing: Microsoft Developer Network
 Apple Developer Tools: Introduction to Instruments
 SystemTap provides free software (GPL) infrastructure to simplify the gathering of information about the running Linux system.

디버깅
관리 시스템
시스템 관리
소프트웨어 최적화