Майкл Джонсон - Разработка приложений в среде 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
будет применять самый последний идентификатор из указанных.
Интервал:
Закладка: