분기 추적

분기 추적 (Branch trace)은 컴퓨터 프로그램 디버깅 툴 또는 분석 기법이다. 이것은 오직 분기 명령어들이 성공적으로 기록된 단축된 명령어 추적이다. IBM 시스템/360에서 이것은 프로그램 사상 기록 (PER: Program-Event Recording)의 한 부분으로서 구현되었지만 응용 프로그램 프로그래밍 수준에서는 거의 사용되지 않았다. 이들의 오버헤드 때문에 PER 하드웨어가 사용되었으며, MVS 시스템에서는 제거되었다.

이것은 또한 펜티엄4, 인텔 제논 그리고 인텔 프로세서의 이후 버전들에서 사용 가능하다.IA-32 Intel® Architecture
Software Developer’s Manual (ftp://download.intel.com/support/processors/celeron/sb/6.pdf), Volume 3B: System Programming Guide, Part 2, Chapter 18.4 Last branch recording overview. 분기 추적을 가능케 하는 전용 프로세서 명령어들이 있으며, 실행된 브랜치들을 상주 메모리의 특별한 '분기 추적 저장소'에 넣는다. 분기 추적 저장소는 또한 순환 버퍼로 설정될 수 있으며, 마지막으로 실행된 분기가 기록된다. 인텔 프로세서를 분기 추적하는 것은 "40 x 애플리케이션 런타임"의 속도 지연을 유발할 수 있다.Exploiting Hardware Advances for Software Testing and Debugging (NIER Track), by Mary Lou Soffa, Kristen R. Walcott, Jason Mars, in Proceedings of ICSE, 2011.

 사용 
분기 추적과 프로그램을 목록화한 컴파일러에 대한 실행 가능성과 참조로, 실행된 명령어들의 전체 경로는 재구성될 수 있다. 더 많은 노력으로, 전체 경로는 메모리 덤프 와 분기 추적으로 재구성될 수 있다.

 대안 
분기들 사이의 명령어들을 포함하는 모든 명령어들에 대한 더 포괄적인 추적은 명령어 집합 시뮬레이터의 사용으로 인해 달성될 수 있다. 전체 명령어 추적은 메모리 변경의 주소/길이와 값 같은 추가적인 정보를 제공할 수 있다.

 각주 

 같이 보기 
 Instruction set simulator
 Program animation

 외부 링크 
 Introduce new branch tracer 'perf branch' by Akihiro Nagai.

분류:디버깅