Майкл Джонсон - Разработка приложений в среде Linux. Второе издание
- Название:Разработка приложений в среде Linux. Второе издание
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:2007
- Город:Москва
- ISBN:978-5-8459-1143-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание
Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Некоторые команды gdbтакже принимают идентификаторы формата для спецификации вывода значений. Идентификаторы формата располагаются за именем команды и отделяются от него косой чертой. После выбора формата необходимость использовать его каждый раз при повторе команды отпадает; gdbзапоминает выбранный формат и использует его по умолчанию.
Идентификаторы формата отделены от команд символом /и состоят из трех элементов: цифра, буква формата и буква, отражающая размер. Цифра и буква размера не обязательны; по умолчанию в качестве цифры устанавливается 1, а размер получает подходящее значение по умолчанию, основанное на букве формата.
Буквы формата следующие: одля обозначения восьмеричного числа, xдля шестнадцатеричного числа, dдля десятичного числа, и для беззнакового десятичного числа, tдля двоичных данных, fдля числа с плавающей запятой, а для адреса, iдля инструкций, с для символа, sдля строки.
Символы, отображающие размер, таковы: b— байт, h— полуслово (2 байта), w— слово (4 байта), g — слово-гигант (8 байт).
attach, at
Подключает отладчик к уже запущенному процессу. Единственным аргументом является идентификатор процесса (pid), к которому осуществляется подключение. Процессы, с которыми установлено подключение, останавливаются, прерывая любые ожидающие или текущие системные вызовы, которые разрешено прерывать. См. detach.
backtrace, bt, where, w
Выводит трассировку стека.
break, b
Устанавливает точку прерывания. Можно указать имя функции, номер строки текущего файла (файл, содержащий выполняемый в данный момент код), пару имя_файла:номер_строкиили даже произвольный адрес с помощью * адрес .gdbназначает и выводит уникальный номер для каждой точки прерывания. См. condition, clearи delete.
clear
Удаляет точку прерывания. Принимает такой же аргумент, как break. См. delete.
condition
Изменяет точку прерывания, определенную номером (см. break), для прерывания, только если выражение истинно. Допускаются произвольные выражения.
(gdb) b664
Breakpoint 3 at 0х804а5с0: file ladsh4.c, line664.
(gdb) condition 3 status==0
delete
Удаляет точку прерывания, определенную номером.
detach
Отключается от текущего подключенного процесса.
display
Отображает значение выражения каждый раз при остановке выполнения. Принимает такие же аргументы (включая модификаторы формата), как print. Выводит номер отображения, которое впоследствии может использоваться для отмены отображения. См. undisplay.
Help
Вызывает справку. При вызове без аргумента предоставляет краткое описание доступной справочной информации. При вызове с другой командой в качестве аргумента выводит справку по этой команде. Доступны перекрестные ссылки.
jump
Переходит на произвольный адрес и продолжает выполнение процесса с этой точки. Адрес — единственный аргумент; его можно определить в форме номера строки или адреса, указанного как *адрес.
list, l
Выданная без аргументов listсначала выводит 10 строк, расположенных возле текущего адреса. Последующие вызовы list выводят последующие 10 строк. При использовании аргумента -выводит предыдущие 10 строк. При указании номера строки выводит 10 строк, окружающих эту строку. При указании пары имя_файла:номер_строкивыводит 10 строк, окружающих заданную. При указании имени функции выводит 10 строк возле начала функции. При указании адреса в виде *адресвыводит 10 строк, окружающих код, находящийся по этому адресу. При указании двух строк, разграниченных запятыми, выводит все строки между заданными.
next, n
Переходит на следующую строку исходного кода в текущей функции, без захода внутрь функций. См. step.
nexti
Переходит на следующую инструкцию машинного языка без захода внутрь функций. См. stepi.
print, p
Выводит значение выражения в понятной форме. Если есть переменная char* с, команда print свыведет адрес строки, a print *свыведет саму строку. Для структур выводятся их члены. Можно использовать приведения типов, которые gdbбудет учитывать. Если код скомпилирован с опцией -ggdb, в выражениях станут доступны перечислимые значения и определения препроцессора. См. display. Команда printпринимает идентификаторы формата, несмотря на то, что при указании и преобразовании типов идентификаторы формата зачастую не нужны. См. x.
run, r
Запускает текущую программу с начала. Аргументы команды run передаются в командную строку для запуска программы. В gdb, подобно оболочке, можно универсализировать имена файлов с помощью *и [], а также осуществлять переадресацию посредством <, >и >>, но нельзя создавать каналы или внутренние документы. Без аргументов runиспользует аргументы, которые были определены в самой последней команде runили set args. Для запуска без аргументов после их задействования используется команда set argsбез дополнительных аргументов.
set
gdbпозволяет менять значения переменных, например:
(gdb) set а = argv[5]
Также каждый раз при выводе выражения с помощью printсоздается сокращенная переменная вроде $1, на которую впоследствии можно ссылаться. Таким образом, если ранее был выведен argv[5]и gdbуказал на то, что результат сохранен в $6, можно переписать предыдущее присваивание так:
(gdb) set а = $6
Команда setимеет также множество подкоманд. Перечислять в этой книге их не имеет смысла, поскольку список слишком велик. Воспользуйтесь help setдля получения более детальной информации.
step, s
Выполняет инструкции программы до достижения новой строки исходного кода. См. next.
stepi
Выполняет в точности одну инструкцию машинного языка; с заходом внутрь функций. См. nexti.
undisplay
Если выдана без аргумента, отменяет все отображения. В противном случае отменяет отображения указанные номерами. См. display.
whatis
Выводит тип данных выражения, переданного в качестве аргумента команды.
where, w
См. backtrace.
x
Команда xподобна printс тем исключением, что она явно ограничивается выводом содержимого по указанному адресу в произвольном формате. Если идентификатор формата не используется, gdbбудет применять самый последний идентификатор из указанных.
Интервал:
Закладка: