Smalltalk по-русски
среда, Май 21, 2008
[VW] SOS: спасите наши души

Иногда, при разработке приложения можно столкнуться с тем, что UI среды перестаёт отвечать. Добиться этого достаточно просто. Откройте Workspace и выполните такой код:

[true] whileTrue: [].
Система заблокирована и может быть не понятно, что делать в такой ситуации. Выходов может быть несколько.

Во-первых, можно нажать комбинацию <Ctrl>-\. При этом откроется "Process Monitor" и все пользовательские процессы будут приостановлены.

Монитор процессов - Process Monitor
Из монитора процессов можно поменять приоритет процессам, открыть на любом процессе инспектор, прибить процес или, что можеть быть более полезно, открыть отладчик.

Во-вторых, если я правильно помню, то монитор процессов, это относительно новая штука. В VW с давних времён существовала возможность открыть отладчик на текущем процессе. Вызывается отладчик комбинацией <Ctrl>-Y. В зависимости от того, какое окно было активно в момент нажатия <Ctrl>-Y, на том процессе и будет активирован отладчик.

Эти две комбинации позволяют легко разобраться с простыми ситуациями. Например, с циклическим распространением событий между слушателями. И монитор и отладчик особенно полезны, если учесть, что из-за особенностей устройства VW ждать переполнения стека (и, как следствие, прерывания процесса) можно очень долго.

Кстати, в ситуации с зацикливанием так же очень помогает инструмент StackOverflow.

Если же отладчик/монитор не помогают или не доступны, то есть последний довод программиста - "Emergency Evaluator". Вызывается он по комбинации <Ctrl>-<Shift>-Y. В открывшемся окне можно выполнять ST-код. Набираете выражение и по нажатию <Esc> оно выполняется. Например, выражение

ObjectMemory quit
просто завершит работу системы. Если же вы хотите сохранить образ перед выходом, то можно воспользоваться выражением
ObjectMemory saveAs: 'filename' thenQuit: true.

Ярлыки:

Популярные статьи
:: Smalltalk?!
:: Почему Smalltalk?
:: Great Leap Forward from Java to Smalltalk

Последние сообщения
:: Smalltalk и Все-Все-Все: Белка-Рыба наносит ответн...
:: Smalltalk и Все-Все-Все
:: [Squeak] Новый сайт Squeakland
:: [Squeak] Squeak для iPhone
:: [Squeak] SqueakDBX
:: [Squeak] Monticello 2
:: [GST] GNU Smalltalk 3.0.4 release
:: MagLev - Gemstone for Ruby
:: [Squeak] JSqueak, Potato
:: [Squeak] WxSqueak 0.5

Архив
Предыдущие новости / Декабрь 2004 / Январь 2005 / Февраль 2005 / Март 2005 / Апрель 2005 / Май 2005 / Июнь 2005 / Июль 2005 / Август 2005 / Сентябрь 2005 / Октябрь 2005 / Ноябрь 2005 / Декабрь 2005 / Январь 2006 / Февраль 2006 / Март 2006 / Апрель 2006 / Май 2006 / Июнь 2006 / Июль 2006 / Сентябрь 2006 / Октябрь 2006 / Ноябрь 2006 / Декабрь 2006 / Январь 2007 / Февраль 2007 / Март 2007 / Апрель 2007 / Май 2007 / Июнь 2007 / Август 2007 / Сентябрь 2007 / Ноябрь 2007 / Январь 2008 / Март 2008 / Май 2008 / Июнь 2008 / Июль 2008 / Август 2008 / Сентябрь 2008

Atom Feed
Smalltalk по-русски


Powered by Blogger