2017년 5월 30일 화요일

breakpoint

breakpoint

Eclipse의 디버그 인터페이스로, 프로그램이 breakpoint로 정지하고 있는 모습

breakpoint(: breakpoint)는, 소프트웨어 개발디버그 작업에 대해 실행중의 프로그램을 의도적으로 일시정지시키는 개소이다.breakpoint의 지정 기능은 많은 디버거에 대비할 수 있고 있어 이것을 이용하는 것으로 프로그램의 임의 개소에의 도달을 자동적으로 포착할 수 있다.breakpoint로의 정지 후, 프로그래머는 통상의 디버그 작업과 같이 실행 환경(메모리, 레지스터, 로그, 파일등)을 관찰해, 프로그램이 기대 대로에 기능하고 있을지를 판단한다.

통상, breakpoint에는 프로그램의 실행을 중단시킬지를 결정하는 1개이상의 조건을 설정할 수 있다.

가장 일반적인 breakpoint는, 지정한 명령을 실행하기 전에 프로그램의 실행을 정지한다.이것을 「명령 breakpoint」 등이라고 부른다.

또, 메모리의 특정 영역의 읽어들여, 써, 갱신을 트리거로서 정지시키는 경우도 있다.이것을 「데이터 breakpoint」혹은 「워치 포인트」 등이라고 부른다.

그 밖에도 시각을 지정하는 방식의 breakpoint, 키 입력등을 트리거로 하는 breakpoint가 있다.

CPU의 상당수는 breakpoint를 하드웨어로 서포트하고 있다.이 하드웨어에는, 분기 지연 슬롯에 있는 명령에는 breakpoint를 설정할 수 없다는 등 말한 제한이 있는 경우도 있다.그러한 제한은 마이크로 아키텍쳐에 기인하는 것으로, 프로세서에 의해서 다양하다.대략적으로 말하면, breakpoint에 도달하면 예외를 발생해, 거기에 따라 디버그 대상 프로세스를 실행할 수 없는 상태에 천이시켜, 디버거 프로세스에 제어를 옮긴다.

하드웨어가 서포트하고 있지 않는 경우, 디버거로 소프트웨어적으로 breakpoint를 실장할 필요가 있다.명령 breakpoint의 경우, 단지 breakpoint를 설정한 명령을 다른 명령에 치환하면 좋다.그러나, 데이터 breakpoint를 소프트웨어로 실현되려고 하면, 디버그 대상 어플리케이션의 성능이 큰폭으로 저하하는 것이 많은[1].

프로그램 언어의 실장에 따라서는, 디버그 기능을 다른 프로그램에 공개하고 있는 경우도 있다.예를 들면, FORTRAN의 일부의 방언에는 AT문이 있지만, 이것은 원래는 명령 breakpoint를 위한 물건이었다.Python에는 Python 프로그램으로부터 액세스 가능한 디버거가 실장되고 있는[2].이러한 기능을 남용하면 COMEFROM문과 같은 기능을 실장할 수 있는[3].

각주・출전

This article is taken from the Japanese Wikipedia breakpoint

This article is distributed by cc-by-sa or GFDL license in accordance with the provisions of Wikipedia.

Wikipedia and Tranpedia does not guarantee the accuracy of this document. See our disclaimer for more information.

In addition, Tranpedia is simply not responsible for any show is only by translating the writings of foreign licenses that are compatible with CC-BY-SA license information.

0 개의 댓글:

댓글 쓰기