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