Вопросы по меню отладки в squeak4.1 - PullRequest
1 голос
/ 15 февраля 2011

друзья Как показано в заголовке, в то время как я отлаживаю в squeak4.1, меню «отладка» мощно, есть кнопки «Приступить», «Перезагрузить», «Ввод», «Через», «Через» и т. Д. Каждый раз, когда я вхожу в кнопку «В», я могу проследить в конкретный код, но в чем разница между кнопками «За» и «Через»?

1 Ответ

4 голосов
/ 15 февраля 2011

Поначалу отладчик Squeak может быть немного пугающим.Давайте рассмотрим различные его части.

Стек контекста

Список в верхней части окна отладчика является представлением стека контекста или стек вызовов .Контекст - это состояние активного блока или метода.

Самый верхний контекст в стеке - тот, который выполняется в данный момент.Обычно после возврата из контекста выполнение программы возобновляется в нижеследующем контексте (т. Е. В контексте отправителя).

Панель кода

Код для выделенного методав контекстном стеке отображается в кодовой панели в центре окна отладчика, и текущий оператор в этом методе подсвечивается.

Экземпляр ипеременные контекста

В нижней части окна отладчика есть два списка watch , используемых для отображения переменных.

Список слева содержит все переменные экземплярадля получателя текущего метода.Список справа содержит все временные переменные в текущем контексте.

Когда переменная выбрана в этом списке, ее значение отображается в пространстве справа от списка.

Кнопки отладчика

Вот чтокнопки отладчика предполагают, что отладчик находится в состоянии, показанном на следующем рисунке:

Squeak debugger screen shot

Продолжить: Закрыть отладчик и продолжить .
Продолжить выполнение программы в обычном режиме.Здесь выведите "12345" на стенограмме, издайте звуковой сигнал, вернитесь к #someMethod и т. Д. *

Перезапустите: Сбросьте контекст к егоstart.
Перезапустите выполнение текущего контекста стека, выделив его первое отправленное сообщение (здесь to: 5).

Into: Шаг в , которое отправляет сообщение
Шаг внутри метода (здесь Interval>>do:), выделяющий первое отправленное сообщение внутри него.

Over: Шаг более отправка сообщения
Выполнениевыделенное сообщение отправьте (#do:) и выделите следующее (#beep).

Через: Шаг в блок
Шаг по коду, например over за исключением того, что отладчики также останавливаются при входе в любой контекст, код которого является частью отображаемого в данный момент метода.Здесь это означает:

  • Остановка выполнения внутри блока [:each | Transcript show: each]) вместо переворота всего вызова #do: за один раз.
  • При возврате из блока отладчикшаг до следующей точки в этом методе вместо перенастройки к месту, где был оценен блок (т.е. внутри Interval>>do:).

Некоторые простые конструкции блока, такие как ifTrue: [] и ifFalse: []не компилируется при отправке фактического сообщения, и отладчик всегда входит в такие блоки независимо от того, используется ли Over или Through .

Полный стек: Показать полныйstack
Показать больше кадров на панели стека.

Run to Here: Run to Selection
Например, если вы выделите текст "beep" в этом методе программа возобновит работу и остановится непосредственно перед отправкой сообщения #beep.

Где: Выберите текущий диапазон ПК
Если курсор был перемещен, повторно выделите следующее сообщениеотправить в кодовой панели (здесь do: [:each |Transcript show: each]).

Другие функции

Отладчик Squeak также позволяет:

  • легко создать отсутствующий метод, нажав кнопку Создать , когда вы получите DNU
  • позволяет редактировать код непосредственно в отладчике
  • оценивать биты кода, используя do it (cmd-a) и печатать его (cmd-p) команды в коде
  • открыть браузер или инспектор из контекстного меню стека, списка переменных и панели кода
...