А.П. Строляров, И.Г. Головин, И.А. Волкова - Операционная система Unix (1114677), страница 9
Текст из файла (страница 9)
Наиболее просто настроить внешний вид KDE ипанели, если щелкнуть правой кнопкой мыши на рабочем столе KDE ив появившемся контекстном меню выбрать пункт «Настроить РабочийСтол» («Configure Desktop...»). Для того, чтобы какие-либо изменениявступили в силу, надо нажать кнопку «Применить» («Apply»).Самая важная кнопка на панели рабочего стола – кнопка входа вглавное меню, на которой традиционно изображается буква «К». Этакнопка всегда располагается слева. В различных версиях и главные меню могут различаться, но основные принципы их построения везде одинаковы.
Роль этой кнопки аналогична роли кнопки «Пуск» («Start») всистемах семейства Windows.Справа от кнопки главного меню располагаются кнопки вызова наи46более важных или часто вызываемых программ. В разных версиях KDEнабор этих кнопок может различаться, кроме того, пользователь можетудалить и добавить кнопки для запуска любых программ. Пиктограммы кнопок также не имеют стандарта, хотя некоторое единообразие вних все же есть.На панели рабочего стола KDE есть специальные кнопки в видепрямоугольника, поделенного на пронумерованные прямоугольнички(обычно их 4). Каждый прямоугольничек является кнопкой переключения рабочего стола, что дает пользователю возможность разложитьокна используемых им в данном сеансе работы программ по разнымэкранам.В центре панели рабочего стола располагается панель задач, где запущенные пользователем программы показаны кнопками (прямоугольниками) с названиями программ.На правой части панели рабочего стола KDE расположены кнопкидля вызова системных команд и индикации состояния ряда служебныхпрограмм или процессов.
В правом углу панели всегда располагаетсяциферблат системных часов. Щелчок левой кнопки мыши в этой области вызывает окно с календарем.Для манипуляций с файлами и запуска программ в KDE можновоспользоваться файловым менеджером Konqueror, который по функциональности аналогичен файловому менеджеру Windows. Интерфейсокна программы в режиме просмотра файловой системы вполне стандартный и привычный: на левой панели окна представлено дерево файловой системы, а справа - файлы и подкаталоги в выбранном каталоге.Между панелями (или слева) обычно расположена панель управленияс кнопками для переключения режима работы панелей. С помощьюкнопок можно, например, переключить левую панель в режим отображения вкладок, в режим журнала, в режим проигрывателя, перейтив домашний каталог, в корневой каталог, получить доступ к сервису,к сети. Правая панель, в зависимости от настроек, может отображатьпиктограммы каталогов и зарегистрированных файлов или показыватьинформацию о каталогах и файлах в виде текстовых строчек.
При работе с графическими файлами на правой панели вместо пиктограмммогут выводиться иконки с изображением содержимого файла.Следует учитывать, что те же операции над файлами быстрее иудобнее можно проводить средствами командной строки Unix.474Инструментарий программиста4.1Компилятор gcc/g++Компиляторы семейства GCC (Gnu Compiler Collection) являютсякомпиляторами командной строки, т.е. все необходимые действия задаются при запуске компилятора и выполняются уже без непосредственного участия пользователя.
Это, в частности, позволяет использоватькомпилятор в командных файлах (скриптах).Команда gcc предназначена для компиляции программ на языке C,а команда g++ – на языке C++16 .Имена файлов, подлежащих компиляции и линковке, компиляторпринимает с командной строки. Кроме того, компилятор воспринимаетбольшое количество опций. Вам обязательно понадобятся следующиеиз них:• -o <filename> задает имя исполняемого файла, в который будетзаписан результат компиляции (если не указать эту опцию, результат компиляции будет помещен в файл a.out.).• -Wall приказывает компилятору выдавать все разумные предупредительные сообщения (warnings).
Обязательно всегда используйте эту опцию, она поможет вам сэкономить немало времени и нервов.• -ggdb и -g используются для включения в результирующие файлыразнообразной отладочной информации (информации, используемой отладчиком, включая имена переменных и функций, номерастрок исходных файлов и т.п.). Опция -ggdb снабжает файлы расширенной отладочной информацией, понятной только отладчикуgdb. Если вам кажется, что что-то не в порядке с отладчиком,попробуйте использовать опцию -g.• -c указывает компилятору, что результатом должна быть не всяпрограмма, а отдельный ее модуль. В этом случае имя файла дляобъектного модуля можно не задавать, оно будет сгенерированоавтоматически заменой расширения на .o.16 На самом деле, используется один и тот же компилятор; оба имени являютсяобычно символическими ссылками на исполняемый файл компилятора.
Поведениекомпилятора зависит от того, по какому имени его вызвали; прежде всего, различиевыражается в наборе стандартных библиотек, подключаемых по умолчанию присборке исполняемого файла.48• -On задает уровень оптимизации. n=0 означает отсутствие оптимизации (значение по умолчанию).
Для получения более эффективного объектного кода рекомендуется использовать опцию -O2.Учтите, что оптимизация может затруднить работу с отладчиком.• -ansi приказывает компилятору работать в соответствии со стандартом ANSI C.• -pedantic заставляет компилятор строже относиться к соблюдению стандарта.• -E останавливает компилятор после проведения стадии макропроцессирования. Реультат макропроцессирования выдается на стандартный вывод. Эта опция может быть полезна, если ваши макроопределения повели себя не так, как вы ожидали, и хочетсяпонять, что на самом деле происходит.• -D позволяет с командной строки (т.е. без изменения исходныхфайлов) определить в программе некий макросимвол. Это полезно, если в вашей программе используются директивы условной компиляции и требуется, не изменяя исходных файлов, быстро откомпилировать альтернативную версию программы.
Например, -DDEBUG=2 имеет такой же эффект, какой дала бы директива #define DEBUG 2 в начале исходного файла.• -l позволяет подключить к программе библиотеку функций. Так,если в вашей программе используются математические функции (sin, exp и другие), необходимо при компиляции задатьключ -lmath; в некоторых вариантах ОС Unix (например, вSunOS/Solaris) при использовании сокетов вам понадобится такжеключ -lnsl.• -MM анализирует заданные исходные файлы и строит информациюоб их взаимозависимостях.
О том, как использовать полученнуюинформацию, рассказывается в §4.3.Итк, чтобы откомпилировать программу, написанную на языке C и целиком находящуюся в файле prog.c, следует дать командуgcc -g -Wall prog.c -o progПри этом результат компиляции будет помещен в файл prog в текущейдиректории.49Чтобы откомпилировать программу, состоящую из нескольких модулей mod1.c, mod2.c, mod3.c и главного файла prog.c, следует сначалаоткомпилировать все модули:$ gcc -g -Wall -c mod1.c$ gcc -g -Wall -c mod2.c$ gcc -g -Wall -c mod3.cи получить объектные файлы mod1.o, mod2.o, mod3.o.
После этого длякомпиляции основного файла и сборки готовой программы следует датькоманду$ gcc -g -Wall mod1.o mod2.o mod3.o prog.c -o prog4.2Отладчик gdbОтладчик gdb (Gnu DeBugger) позволяет отлаживать программу винтерактивном режиме, пользуясь интерфейсом командной строки, атакже анализировать причины “смерти” программы по созданному системой core-файлу.Учтите, что для нормальной работы отладчика необходимо, чтобывсе модули вашей программы были откомпилированы с ключем -ggdbили -g (см. §4.1). В некоторых случаях нормальной работе отладчикаможет помешать включенный при компиляции режим оптимизации, такчто перед отладкой оптимизацию лучше отключить.4.2.1Пошаговое выполнение программыЧтобы запустить отладчик для программы, исполняемый файл которой называется prog, следует дать команду$ gdb progОтладчик сообщит свою версию и некоторую другую информацию, после чего выдаст приглашение своей командной строки, обычно выглядящее так: (gdb).Основные команды отладчика:• run осуществляет запуск программы в отладочном режиме.
Передзапуском целесообразно задать точки останова (см. ниже). Есливы затрудняетесь определить, где именно следует приостановитьвыполнение программы, поставьте точку останова на функциюmain().50• list показывает на экране несколько строк программы, предшествующих текущей и идущих непосредственно после текущей.• break позволяет задать точку приостановки выполнения программы (breakpoint).
Точка останова может быть задана именем функции, номером строки в текущем файле, либо выражением <имяфайла>:<номер-строки>, например file1.c:73.• inspect позволяет просмотреть значение переменной (в том числеи заданной сложным выражением вроде *(a[i+1].p)).• backtrace или bt показывает текущее содержимое стека, что позволяет узнать последовательность вызовов функций, приведшуюк текущему состоянию программы.• frame позволяет сделать текущим один из фреймов, показанныхкомандой backtrace, что дает возможность исследовать значенияпеременных в этом фрейме и т.п.• step позволяет выполнить одну строку программы. Если в строкесодержится вызов функции, текущей строкой станет первая строка этой функции (т.е.
процесс трассировки зайдет внутрь функции).• next подобна команде step, с тем отличием, что вход в тела вызываемых функций не производится.• until <номер-строки> позволяет выполнять программу до техпор, пока текущей не окажется строка с указанным номером.• call позволяет выполнить вызов произвольной функции.• cont позволяет продолжить прерванное выполнение программы.• help позволит узнать подробнее об этих и других командах отладчика.• quit завершает работу отладчика (можно также воспользоватьсякомбинацией клавиш Ctrl-D).514.2.2Анализ причин аварийного завершения по core-файлуЧасто ошибки в программе приводят к ее аварийному завершению,при котором система создает так называемый core-файл.