Разработка приложений в среде Linux - [16]

Шрифт
Интервал

, подобно оболочке, можно универсализировать имена файлов с помощью >* и >[], а также осуществлять переадресацию посредством ><, >> и >>>, но нельзя создавать каналы или внутренние документы. Без аргументов >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 будет применять самый последний идентификатор из указанных.

4.4. Действия при трассировке программы

Существуют две программы, помогающие трассировать исполняемые файлы. Ни одной из этих программ исходный код не нужен; фактически, они не могут использовать исходные коды. Обе программы выводят в символьной текстовой форме журнал действий, выполняемых приложением.

Первая, >strace, выводит запись о каждом системном вызове программы. Вторая, >ltrace, выводит запись о каждой функции библиотеки, которую вызывает программа (и по выбору может также трассировать системные вызовы). Эти инструменты могут оказаться полезными при определении неполадок в случаях явного сбоя.

Например, предположим, что имеется системный демон, функционирующий уже некоторое время, который начал выдавать ошибки сегментации. Скорее всего, это вызвано изменением в некоторых файлах данных, но неизвестно каких именно. Первым шагом должен быть запуск системного демона под управлением >strace. Нужно просмотреть несколько последних файлов, которые демон открывал перед тем, как произошла ошибка сегментации, и найти в этих файлах возможные причины. Либо предположим, что другой демон внезапно начал занимать много процессорного времени; в этом случае можно запустить его сначала под >strace, а затем и под >ltrace, если >strace четко не покажет, что конкретно делал демон. В результате можно определить входные параметры или условия, которые привели к потреблению такого количества процессорного времени.

Подобно >gdb, >strace и >ltrace можно использовать для выполнения программы от начала до конца или подключаться к уже запущенным программам. По умолчанию >strace и >ltrace производят вывод на стандартное устройство вывода. Обе программы требуют указания сначала собственных опций, за которыми должен следовать исполняемый файл для запуска, и, если исполняемый файл указан, то все опции, которые передаются ему, должны записываться следом.

Обе утилиты поддерживают похожий набор опций.

>-С или >--demangleТолько для >ltrace. Декодирует (или расшифровывает) имена библиотечных символов в читабельные имена. В результате убираются начальные символы подчеркивания (многие функции >glibc имеют внутренние имена с начальными символами подчеркивания) и функции библиотеки С++ становятся более читабельными (С++ шифрует информацию о типе в символьные имена).
>-еТолько для >strace. Указывает подмножество вызовов, которые нужно вывести. Существует множество возможных спецификаций, описанных на man-странице >strace; самой распространенной спецификацией является >-е trace=file, которая трассирует только системные вызовы, связанные с файловым вводом-выводом и обработкой файлов.
>-fПытается «следовать вызову >fork()», по возможности трассируя дочерние процессы. Обратите внимание, что дочерний процесс может некоторое время работать без трассировки до тех пор, пока >strace или >ltrace сможет подключиться к нему и трассировать его действия.
>-о имя_файлаВместо вывода на стандартное устройство вывода выводит в файл имя файла.
>-р pidВместо запуска нового экземпляра программы подключается к процессу с идентификатором >pid.
>-SТолько для >ltrace. Отслеживает системные и библиотечные вызовы.
>-vТолько для >strace. Не сокращает большие структуры в системных вызовах вроде семейства вызовов >stat(), >termios и так далее.

На man-страницах утилит можно найти описание этих и других опций, здесь не упомянутых.

Глава 5

Опции и расширения >gcc

Для правильного использования >gcc, стандартного компилятора С для Linux, необходимо изучить опции командной строки. Кроме того,


Рекомендуем почитать
Яйцо кукушки или Преследуя шпиона в компьютерном лабиринте

В отличие от плохого танцора, хорошему сисадмину мешают только кукушкины яйца. Их откладывают в его компьютер злобные хакеры, чтобы из них вылупились программы, делающие своего папу-кукушку суперпользователем. Но сколько кабелю не виться — а кончику быть: бравый сисадмин не дремлет и за годик-другой выводит злоумышленников на чистую воду: на этот раз хакерская тусовка круто пролетела. Такого предельно краткое содержание классической книги эксперта по компьютерной безопасности Клиффа Столла «Яйцо кукушки».



Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003

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


Недокументированные и малоизвестные возможности Windows XP

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.


Iptables Tutorial 1.1.19

Iptables Tutorial 1.1.19Автор: (C) Oskar AndreassonCopyright (C) 2001-2002 by Oskar AndreassonПеревод: (C) Андрей КиселевПоследнюю версию документа можно получить по адресу: http://iptables-tutorial.frozentux.netfb2-документ отформатирован с использованием большого количества тегов и . Чтобы в «читалке» (в частности, Haali Reader) текст выглядел «красиво», настройте свойства соотвествующих стилей (emphasis и strong), изменив, например, их цвета или начертания. (прим. автора fb2-документа)


Перспективы свободного программного обеспечения в сфере государственного управления и бюджетном секторе

n1`Глава 2 из отчета Фонда Новая экономика Министерству экономического развития и торговли по теме «Анализ результатов и разработка предложений по созданию механизмов поддержки (в том числе за счет средств федерального бюджета) проектов по использованию ИКТ в экономике, социальной сфере, государственном управлении на региональном и муниципальном уровнях власти». Работа выполнена в рамках ФЦП «Электронная Россия». Дается очерк перспектив модели коммерческого программного обеспечения, известной как свободное программное обеспечение (СПО), в части удовлетворения потребности государственных органов и организаций в компьютерных программах, в сравнении с альтернативной (несвободной) моделью.