Фэндом


ВведениеПравить

Эта глава представит вам основные инструменты, формирующие окружение разработчика в Inferno.

  • Редакторы текста - Notepad и Brutus
  • Компиляторы Limbo - независимые и зависимые от платформы
  • Отладчик - для отладки на уровне исходного кода
  • Менеджер модулей - для просмотра объектного кода
  • Менеджер задач - для управления запущенными процессами

За исключением компиляторов Limbo, все средства разработки являются графическими приложениями.

В этой главе, inferno_root - это каталог, в который была установлена ОС Inferno. Например, в случае с Windows, это будет c:\users\lnferno, для среды Unix это будет /usr/inferno.

Соглашение по именованию файловПравить

По соглашению файлы используют следующие расширения:

filename.b Файл с исходным кодом Limbo.
filename.dis Файл двоичного образа выполняемый виртуальной машиной Dis; создается на этапе компиляции.
filename.m Файл исходного кода модуля Limbo.
filename.s Ассемблерный код; опционально создаваемый во время компиляции.
filename.sbl Файл отладочной информации; опционально создаваемый во время компиляции.

Имена файлов не могут быть длиннее 27 символов. Разрешены только буквы, цифры, тире (-), подчеркивание (_) и точка (.).

Разработка приложенийПравить

Процесс разработки приложений на Limbo очень похож на процесс разработки приложений в других средах программирования. Обычно он сводится к следующим действиям:

  • С помощью Notepad или Brutus пишется программа
  • Компилируеся используя компилятор Limbo
  • Отлаживается с помощью отладчика (Debugger)
  • Просматривается программа с помощью Dis Module Manager
  • Отслеживается ее выполнение с помощью менеджера задач (Task Manager)

Написание программ в NotepadПравить

Программа на Limbo - это модуль или набор модулей, которые выполняют какую-то задачу. Вы можете написать исходный код используя любой текстовый редактор вне Inferno, или воспользовавшись редактором Notepad, который поставляется с Inferno.

Запуск NotepadПравить

// неправильный путь В меню менеджера окон выберете Inferno >> Development Tools >> Notepad. Приложение Notepad появится на экране.

P138.png

Сохранение файла в NotepadПравить

Для того, чтобы сохранить новый файл (который ранее не был сохранен), выберите опцию File >> Save As. Вызовется всплывающее окно File.

P139 01.png

Введите имя файла и нажмите Enter.

Для того, чтобы сохранить файл после редактирования, выберите File >> Save.

Создание нового файла в NotepadПравить

Чтобы создать новый файл в Notepad выберите File >> New.

Поиск в NotepadПравить

  1. Когда файл открыт выберите Search >> Search For. Высветится всплывающее окно Search For.

P139 02.png

  1. Наберите текст, который хотите найти и нажмите Enter. Первый его экземпляр подсветится.
  1. Чтобы повторить поиск того же текста, выберите Search >> Search.

Редактирование исходного файла в NotepadПравить

В Notepad выберите File >> Open. Диалоговое окно Open выведется на экран.

P140.png

Выход из NotepadПравить

Выберите File >> Exit.

Редактирование примераПравить

Привем пример создания написания простой программы:

  1. Запустите Notepad и введите следующий текст в новый файл.
implement Hello;

include "sys.m";
sys: sys; include "draw.m";

Hello: module{
    init: fn(ctxt: ref Draw->context, argv: list of string);
};

init(ctxt: ref Draw->context, argv: list of string) {
    sys = load Sys Sys->PATH;
    sys->print("Hello, world\n");
}

P142.png

  1. Выберите File >> Save As.
  1. В всплывающем окне File, введите hello.b .

P143.png

  1. Нажмите Enter. Файл /usr/hello.b сохранен.

Написание программы в BrutusПравить

В Inferno есть другой редактор под названием Brutus, который может быть использован для написания исходного кода на Limbo. Интересной особенностью Brutus является то, что в него входит поддержка плюмбинга, который позволяет автоматически открывать файлы описания Limbo-модулей.

Brutus также поддерживает создание SGML(стандартный обобщённый язык разметки) файлов.

Введение в BrutusПравить

// неправильный путь

1. Выберите Inferno >> Applications >> Text Editor чтобы вызвать редактор Brutus.

По умолчанию файл называется unnamed - это отражается на главной панели редактора Brutus.

P145.png

Сохранение файла в BrutusПравить

2. В редакторе Brutus, выберите File >> Write. Появится диалоговое окно записи файла.

P146.png

3. Для того, чтобы сохранить файл в каталог /usr введите имя файла и нажмите OK.

Создание нового файла в BrutusПравить

В Brutus выберите File >> New.

Открытие существующего файла в BrutusПравить

1. В Brutus выберите File >> Open.

P147.png

2. Выберите Browse.

P148.png

3. Выберите файл для открытия - hello.b, и нажмите Open. Файл откроется в Brutus.

Использования плюмбинга в BrutusПравить

1. Откройте файл hello.b в Brutus

P149.png

2. Наведите курсор на имя файла, например sys.m, нажмите правую кнопку мыши. Файл откроется.

P150.png

Переключение между различным открытыми экземплярами BrutusПравить

Вы можете запустить более одного экземпляра Brutus. Добавочные экземпляры Brutus перечислены в меню File. Выберете File >> имя_файла чтобы вызвать тот экземпляр Brutus, в котором открыт этот файл.

Выход из BrutusПравить

1. Нажмите кнопку Закрыть на окне.

Если изменения не сохранены, вызовется диалоговое окно Warning с предупреждением.

P151.png

2. Выберите Write (записать) чтобы выйти из Brutus и сохранить изменения или Proceed для выхода без сохранения изменений, или Cancel, чтобы вернуться в файл не закрывая Brutus.

Компилирование программПравить

После того как вы написали файл с исходным кодом на Limbo, используйте компилятор чтобы создать исполняемый модуль. Компилятор переводит исходный код на Limbo в машинно-независимые двоичные файлы (по умолчанию им дается разрешение .dis) для выполнения на виртуальной машине Dis.

Существует два компилятора для генерации Dis-файлов (.dis):

  • Машинно-зависимый компилятор который запускается из родной ОС.
    • Windows. Исполняемый файл компилятора называется limbo.exe, и располагается в каталоге /Nt/386/bin.
    • UNIX. Исполняемый файл компилятора называется limbo и лежит в каталоге /Solaris/sparc/bin или /Solaris/386/bin (вместо Solaris вставьте имя своей ОС), в зависимости от платформы.
  • Машинно-независимый компилятор, написанный на Limbo запускается внутри Inferno. Он (Limbo.dis) расположен в каталоге /dis.

Двоичные файлы, генерируемые обоими компиляторами идеинтичны.

Использования машинно-зависимого компилятораПравить

Пример компиляции в Windows.

  1. Откройте окно MS-DOS выбрав Start >> Programs >> MS-DOS Prompt

На экран выведется окно MS-DOS Prompt

P153.png

Перейдите в каталог c:\users\lnferno\Nt\386\bin или скопируйте файл limbo.exe в удобный для вас каталог.

  1. Перейдите в каталог, в который вы сохранили файл hello.b:
cd \users\lnferno\usr\ckania

P154.png

  1. Откомпилируйте программу hello.b введя: "limbo hello.b".

P155.png

Просмотрите содержимое каталога чтобы увидеть, что файл hello.dis был создан.

P156.png

Имейте в виду, что результирующий файл hello.dis может быть исполнен только внутри Inferno.

Использование машинно-независимого компилятора.Править

  1. Откройте окно командного интерпретатора в менеджере окон

P157.png

Перейдите в каталог, содержащий файл hello.b:

cd /usr/inferno
  1. Откомпилируйте программу hello.:
limbo hello.b

P158.png

  1. Проверьте наличие файла hello.dis

P159.png

  1. Запустите результат своей работы:
hello

P160.png

Опции компилятораПравить

Пример команды компилятора с одним ключем:

limbo -g hello.b

// TODO

Флаг -g создает файл с таблицей символов нужный отладчику. В результате получаются файлы hello.dis и hello.sbl. Об полного списка всех параметров компилятора смотрите limbo - компилятор limbo в Inferno Reference Manual.

Отладка программПравить

Чтобы отладить модуль, который разрабатывается, вызовете компилятор Limbo с параметром командной строки -g. Этот параметр заставляет компилятор выводить дополнительную информации, которая нужна отладчику в файл с таблицей символов.

Замечание: Для того чтобы использовать отладчик Limbo, EMU должен быть запущен в режиме интерпретатора. За подробностями о режимах работы emu обращайтесь к Inferno Reference Manual.

Следующие файлы требуются отладчику для выполнения действий над модулем.

.b - Исходный код Limbo .dis - Скомпилированный код Dis .sbl - Файл таблицы символов

Запуск отладчикаПравить

Отладчик это графическое приложение запускаемое из менеджера окон. Для запуска отладчика выберите Inferno>>Development Tools>>Limbo Debugger из менеджера окон. Рисунок 4-22 показывает открывающиеся окна когда вы запускаете отладчик.

Рисунок 4-22 Окно отладчика Limbo

P162.png

Окно стека в отладчикеПравить

Окно стека поделено на две панели. левая панель испоьзуется для выбора какую информацию отображать, и правая панель показывает содержиание стека. Первоначально, различные части пространства имен представлены кнопками в "закрытом" состоянии.

По щелчку, кнопки раскрывают дальнейшие подробности (включая локальные имена переменных) и их текущие значения показываются в соответствующей строке на правой панели.

Рисунок 4-23 Примерный вид окна стека

P163.png

Управляющее окно отладчикаПравить

Когда вы запускаете отладчик Limbo, на заднем плане открывается управляющее окно отладчика. Это окно используется для управлением процессом отладки.

Меню File используется для выбора модуля (нити) для отладки. Этот модуль может быть одним из следующих:

  • Уже запущенная нить выбранная через File>>Threads. Нить может быть также выбрана через Inferno>>Shell>>Task Manager.
  • Вновь созданная нить программы запущенной посредством File>>Open.

Когда вы открываете нить для отладки, также будет показан исходный файл Limbo, как на Рисунке 4-2.

Рисунок 4-2 Исходный файл Limbo в окне отладчика

P165.png

Кнопки отладчикаПравить

В Таблице 4-1 описаны кнопки расположенные слева в окне управления отладчика.

Таблица 4-1 Кнопки отладчика // Вместо знака # вставить иконки

P166 01.png Убить текущий процесс (Red X)
P166 02.png Остановить отладку текущего процесса (Green X)
P166 03.png (Одна кнопка появляется дважды) Запустить до точки останова (Green-Filled Circle) - Ready
P166 04.png Run to breakpoint Stop (Red Octagon) - Running
P166 05.png Выполнить одну команду
P166 06.png Выполнить один оператор
P166 07.png Выполнить вызов
P166 08.png Выполнить до конца функции
P166 09.png Установить/Очистить точку останова (Red X, Green Arrow)

Использование отладчикаПравить

После выбора нити для отладки или открытия файла с исходным текстом программы, щелкните на кнопке "Run to Breakpoint Start" для начала выполнения нити. По умолчанию, программа останавливается на первом выполняемом операторе. Вы можете отлаживать только одно приложение за раз. Приложение может запускать дополнительные нити и загружать модули при необходимости, но отладчик может загрузить только одно приложение. Вы можете изменить действие отладчика через установки опций. Смотри раздел Установка Опций Отладчика.

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

Пошаговое выполнение внутри функцийПравить

Когда вы проходите по программе по одному приложению за раз, есть несколько интересных этапов, когда вызов функции может быть замечен:

  • Во-первых операторы внутри функции подсвечиваются. Так показывается расположение частей стека для функции.
  • Во-вторых отладчик останавливается и подсвечивает каждый аргумент функции, как только он обработан.
  • В-третьих отладчик подсвечивает выражения внутри функции снова, чтобы показать текущих вызов функции с посчитанными аргументами.

Точки остановаПравить

Точки останова - удобный метод для остановки и запуска программы которую вы отлаживаете.

Установка точки останова 1. Выберите часть кода, на которой следует вызвать остановку. 2. Нажмите на кнопку Set/Clear Breakpoint. Выбранный код высветится красным. Также, число точек останова отразится в окне Break.

Очистка точки останова: 1. Выберете ту часть кода, где была установлена точка останова. 2. Нажмите на кнопку Set/Clear Breakpoint. Код вернет свой номальный цвет и связанная с ним число точки останова удалится из окна Break.

Использование плюмбинга в отладчикеПравить

Отладчик поддерживает плюмбинг, обеспечивающий автоматическую загрузку файла с исходным текстом отлаживаемого файла. Когда ваша отлаживаемая программа заружена в отладчике, и вы кликнули правой кнопкпой мыши в панеле исходного кода, файл с текстом программы открывается для редактрования и просмотра в редакторе Brutus. Ошибки отображаются в окне плюмбинга.

Рисунок 4-25 Плюмбинг и отладчик

P169.png

Так же и в Brutus, возможности плюмбинга можно использовать для открытия связанных файлов-модулей. Смотрите раздел "Использование Плюмбинга в Brutus" ранее в этой главе.

Завершение программыПравить

В конце каждой программы имеется неявня точка останова , так же как и первый выполняемый оператор. Для дальнейшего продолжения, программа должна быть прервана щелчком по кнопке "Stop Debugging Process". Позже вы можете перезапустить программу щелкнув по кнопке "Run to Breakpoint Start". По умолчанию, все другие нити созданные отлаживаемой программой будут прерваны на выходе.

Установка опций отладчикаПравить

Вы можете изменить режим работы отладчика через набор опций. Для отображения опций отладчика выберите File>>Options. Выберите General для просмотра страницы опций.

Рисунок 4-26 Закладка опций General

P171.png

Опции отладчика General следующие:

  • Executable module - Исходный файл модуля загруженный в отладчике, или если модуль не загружен вы можете набрать путь и имя файла модуля в этом поле.
  • WM program - Выберите эту опцию когда вы отлаживаете модули испоьзующие оконный менеджер. Выбор этой опции отправляет дополнительные начальные аргументы программе, такие как размещение создаваемого окна 20 на 20 пикселей в левой части Окна Управления отладчика. Последующие окна, если они открываются, так же будут приведены к размеру 20 х 20 пикселей и размещены каскадом.
  • Program Arguments - Наберите необязательные аргументы командной строки передаваемые программе, когда она выполняется в отладчике.
  • Working Directory - Это поле показываеткаталог, в котороммогут быть найдены исполняемые файлы (.dis) и таблицы символов (.sbl). Если значение не задано, вы можете набрать путь в этом поле.

Выберите Thread для отображения опций которые управляют тем, как отладчик обрабатывает операции и нитями.

Рисунок 4-27 Закладка опций Thread

P172.png

  • Block/Run New Threads - Выбор Block new threads запретит создание загруженной в отладчике программой новых нитей. Новые нити создаются, но переходят в заблокированное состояние. Эта опция полезна когда отлаживаются вызовы других модулей которые могут быть не завершены или недоступны в данный момент. Выбор пункта Run new threads позволяет программе загруженной в отладчике создавать новые нити.
  • Kill/Detach Threads on Exit - Выбор Kill threads on exit будет завершать любые нити созданные во время отладки, когда отладчик закрывается. Выбор пункта Detach threads on exit не прерывает выполнение созданный во время отладки, когда отладчик закрывается.

Изменения сделанные в этом диалоговом окне вступают в силу поле шелчка на кнопке Ok. После того как вы звершили установку опций в окне Wmdeb, щелкните на Ok.

Использование ПоискаПравить

Пока исходный файл загружен в отладчике, вы можете пользоваться функцией поиска строки символов в исходном коде. 1. Выберите Search >>Search for. Будет выведен диалоговое окно поиска.

P173.png

2. Наберите символы для поиска. 3. Нажмите Enter. Первое найденные символы будут выделены цветом. Меню Search отображает текущую строку поиска. 4. Выберите Search>>(ваша строка) для поиска следующего экземпляра строки. 5. Для поиска в выделенном тексте, выделите некоторый текст и затем выберите Search >> Look.

Просмотр программ при помощи Dis Module ManagerПравить

С помощью Dis Module Manage вы можете просматривать объектный код (*.dis файлы) для виртуальной машины Dis и видеть подробности объектного коа, такие как информацию о заголовке, сегмент кода, сегмент данных, описатели типа, описатели ссылок.

Запуск Dis Module ManagerПравить

Из оконного менеджера, выберите Inferno >> Inferno Development Tools >> Module Manager. Будет запущен Dis Module Manager.

Рисунок 4-28 Dis Module Manager

P174.png

Открытие файла с объектным кодомПравить

1. В окне Dis Module Manager выберите File >> Open Module. Будет отображено диалоговое окно Open Dis File.

Рисунок 4-29 Диалоговое окно Open Dis File

P175.png

выберите файл для просмотра и нажмите Open. Могут быть просмотрены только объектные файлы (.dis файлы). Файл открывается и отображается сегмент кода объектного файла.

Рисунок 4-30 Dis Module Manager - Сегмент кода

P176.png

Просмотр свойств файлаПравить

Вы можете просматривать различные аспекты объектного кода файла в Dis Module Manager. 1. Для просмотра секции заголовка объектного файла, выберите View >> Header. Будет отображена секция заголовка

Рисунок 4-31 Dis Module Manager - Заголовок

P177.png

2. Для просмотра сегмента данных объектного файла выберите View >> Data Segment. Будет отображен сегмент данных

Рисунок 4-32 Dis Module Manager - Сегмент данных

P178.png

3. Для просмотра опистелей типа выберите View >> Type Descriptors. Будут отображены описатели типа

Рисунок 4-33 Dis Module Manager - Описатели типа

P179.png

4. Для просмотра описателей ссылок выберите View >> Link Descriptors. Будут отображены описатели ссылок

Рисунок 4-34 Dis Module Manager - Описатели ссылок

P180.png

5. Для просмотра сегмента кода выберите View >> Code Segment. Будет отображен сегмент кода Рисунок 4-35 Dis Module Manager - Сегмент кода

P181.png

Выход из Dis Module ManagerПравить

Кликните на кнопку закрытия окна Dis Module Manager. Dis Module Manager закроется. Примечание: Запись .dis модулей и запись .s модулей из меню File в настоящий момент не поддерживается. Опции меню Properties в настоящий момент не поддерживаются.

Мониторинг запущенных программ при помощи Task ManagerПравить

В Inferno предусмотрен Task Manager для просмотра нитей запущенных приложений, отладки запущенных нитей и прерывания выполняющихся нитей.

Запуск Task ManagerПравить

Для запуска Task Manager выберите Inferno >> Development Tools >> Task Manager. Будет запущен Task Manager.

P182.png

Пример запуска отладчика из Task ManagerПравить

Для использования отладчика с запущенным приложением, вам понадобиться скомпилировать приложение с опцией создающей таблицу символов, нужную отладчику. Смотри раздел Компиляция программ. Если таблица символов в том жекаталоге что и приложение, отладчик найдет ее, иначе запросит местоположение файла символьной таблицы.

1. В окне EMU скопируйте файл /appl/wm/coffee.b в свой пользовательский каталог. Например: cp /appl/wm/coffee.b /usr/inferno Нажмите Enter.

Рисунок 4-37 Копирование файла /appl/wm/coffee.b

P183.png

2. Для повторной компиляции с опцией -g (создающей символьную таблицу - файл .sbl), наберите: limbo -g coffee.b Нажмите Enter.

Рисунок 4-38 Компиляция с опцией -g

P184.png

3. Убедитесь, что файл coffee.sbl существует набрав: ls *.sbl Нажмите Enter.

Рисунок 4-39 Файл символьной таблицы доступен

P185.png

Запустите Task Manager выбрав nferno >> Development Tools >> Task Manager. Появится окно Task Manager.

Рисунок 4-40 Task Manager - Приложение Coffee не запущено

P186.png

В оконном менеджере запустите приложение, которое вы хотите отладить. Запустите вновь скомпилированную версию приложения Coffee набрав в приглашении командного интерпретатора: coffee Появится приложение Coffee.

Рисунок 4-41 Приложение Coffee

P187.png

6. Щелкните на заголовке окна Task Manager, чобы оно получило фокус. Окно Task Manager пополнилось и отображает нити ассоциированные с приложением Coffee. В любой момент вы можете щелкнуть на кнопке Refresh для обновления окна Task Manager.

Рисунок 4-42 Нити Coffee в окне Task Manager

P188.png

7. В окне Task Manager щелкните по первой ните помеченной coffee для ее выбора. Нить будет выделена цветом.

Рисунок 4-43 Нить Coffee выделенная цветом

P189.png

Щелкните Debug. Запустится Отладчик и загрузит файл coffee.b

Рисунок 4-42 Нити Coffee в окне Task Manager

P190.png

Обратитесь к предыдущему разделу Отладка Программ для дополнительной информации.

Завершение нитиПравить

Замечание: С осторожностью пользуйтесь командой Kill в Task Manager. Завершение нити процесса такой как Window Manager может явиться причиной внезапного останова Inferno. В Task Manager выберите нить для завершения, затем нажмите Kill.

Просмотр связанных управляющих файловПравить

Для просмотра управляющих файлов связанных с выполняющейся нитью, выберите сначала нить в Task Manager, затем выберите Files. Связанные управляющие файлы будут показаны в Блокноте.

Рисунок 4-45 Управляющие файлы

P191.png

Выход из Task ManagerПравить

Для выхода из Task Manager щелкните на кнопку закрытия.

Инструменты конкурентного программирования LimboПравить

Язык Limbo поддерживает параллелизм распределенных приложений на уровне модулей. Limbo использует принцип передачи сообщений для поддержки кооперативной или конкурентной синхронизации. Limbo может пользоваться SPIN для проверки или помощи в проектировании распределенного приложения. поддержка конкурентной синхронизации в Java не поддерживается проверкой SPIN.

Инструментарий SPIN описан в книге G. Holzmann изданной в Prentice Hall, озаглавленной "Design and Validation of Computer Protocols".

Подробную информацию о SPIN и бесплатные средства разработки могут быть получены по адресу: http://netlib.bell-labs.com/netlib/spin/whatispin.html

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики