2011-02-15 2 views
1

친구 제목에서 보았 듯이 squeak4.1에서 디버깅하는 동안 "디버그"메뉴가 강력합니다. 진행, 재시동, 삽입, 종료, 통과 버튼 등 내가 입력 버튼을 입력 할 때, 특정 코드를 추적 할 수 있지만, 오버 및 스루 버튼의 차이점은 무엇입니까?squeak4.1의 디버그 메뉴 질문

답변

4

스퀵 디버거는 처음에는 약간 협박 할 수 있습니다. 그것의 다양한 부분을 살펴 봅시다.

컨텍스트 스택

디버거 윈도우 상단 목록은 컨텍스트 스택 또는 호출 스택의 표현이다. 컨텍스트는 활성 블록 또는 메서드의 상태입니다.

스택의 맨 위에있는 컨텍스트가 현재 실행중인 컨텍스트입니다. 일반적으로 컨텍스트 프로그램에서 돌아와서 실행하면 컨텍스트에서 다시 시작됩니다 (즉, 컨텍스트가 보낸 사람의 컨텍스트).

메소드에 대한 코드가 컨텍스트 스택 강조 코드 디버거 창 및 그 방법에서 현재 명령문의 중심에 코드 창에 도시

이 강조된다.

인스턴스 및 상황 변수 디버거 창 하단에서

변수를 표시하는 데 사용 목록을 볼 수있다.

왼쪽의 목록에는 현재 메소드의 수신자에 대한 모든 인스턴스 변수가 들어 있습니다. 오른쪽의 목록에는 현재 컨텍스트의 모든 임시 변수가 들어 있습니다.

해당 목록에서 변수를 선택하면 해당 값이 목록 오른쪽의 공백에 표시됩니다.

디버거 버튼 여기

은 무엇 디버거 버튼을 수행 디버거를 랬은이 그림에 표시된 상태에 있습니다

Squeak debugger screen shot

진행 : 디버거를 닫고 을 진행 .
프로그램 실행을 정상적으로 계속하십시오. 여기에 표시 성적 증명서에 "12345"는 경고음 소리를 등 #someMethod로 돌아가서 ...

다시 시작 :의 시작에 대한 컨텍스트를 재설정합니다.
첫 번째 메시지 보내기 (여기 to: 5)를 강조 표시하는 현재 스택 컨텍스트 실행을 다시 시작합니다.

현황 :에 단계 메시지 안에 보내는 제 1 메시지를 강조하는 방법 (여기서 Interval>>do:) 내부
단계를 보낸다.

이상 : 단계 메시지 이상
강조 표시된 메시지 전송 (#do:)를 실행하고 다음 (#beep)를 강조 보냅니다.

스루 : 그 현재 코드 표시 방법의 일부인 컨텍스트를 입력 할 때, 디버거는 멈추는 것을 제외 위에 같은 코드를 통해 블록
단계로
단계. 여기에서 그 의미

  • [:each | Transcript show: each] 내부의 실행이 중지) 대신에 한번에 전체 #do: 호 통해 스테핑 블록.
  • 블록에서 돌아 왔을 때 디버거는 블록이 평가 된 곳 (즉, 내부 Interval>>do:)으로 돌아가는 대신이 방법의 다음 단계를 수행합니다.

간단한 블록 ifTrue: [] 같은 구성 실제 메시지 전송 디버거 항상 사용 스루 또는 위에 여부 이러한 블록 내부 ifFalse: [] 단계로 컴파일되지 않는다.

전체 스택 : 전체 스택 표시
스택 창에 더 많은 프레임을 표시합니다. 여기에

실행 : 예를 들어 선택
실행하면 프로그램이 재개 단지 #beep 메시지 보내기 전에 중단이 메서드의 텍스트 "삐"을 강조합니다.

어디 : 현재 PC의 범위를 선택
커서가 (여기 do: [:each |Transcript show: each]) 코드 창에 보내 다음 메시지를 다시 강조 이동 한 경우.

다른 기능

이죠 디버거는 당신을 수 있습니다 : 당신이 DNU을 얻을 때

  • 쉽게 만들기 버튼을 클릭하여 누락 된 방법을 만들
  • 당신이 코드를 편집 할 수 디버거에서 직접
  • 을 사용하여 코드 비트를 평가하십시오. (cmd-a) 및 인쇄는 (cmd를-p)이 코드
  • 스택 변수 목록과 코드 창의 상황에 맞는 메뉴에서 브라우저 또는 관리자를 엽니에서 상세 설명은 당신이 아주 많이
+0

감사합니다 명령 :) – parsifal