Программы Linux задают
ядро
сделать некоторые вещи для них. То
поспешно
Команда раскрывает эти системные вызовы. Вы можете использовать их, чтобы понять, как работают программы и почему иногда они не.
Ядро и системные звонки
Как умно, как они могут быть, компьютерные программы не могут сделать все для себя. Им нужно сделать запросы, чтобы иметь определенные функции, выполненные для них. Эти запросы переходят на ядро Linux. Как правило, есть библиотека или другой программный интерфейс, который программные вызовы, и библиотека, затем делает соответствующий запрос, называемый системой вызова в ядре.
Возможность видеть системные вызовы, что программа сделала и какие ответы могли помочь вам понять внутреннюю работу программ, которые вас интересуют или что вы написали. Это
какие
поспешно
делает
Отказ Это может помочь устранить проблемы и искать узкие места.
Это не то же самое, что
Отладка приложения
с таким инструментом
GDB.
Отказ Программа отладки позволяет вам расследовать внутреннюю работу программы, так как она работает. Он позволяет вам выйти через логику вашей программы и проверять значения памяти и переменной. Путем сравнения, что
поспешно
Принимает ли запечатление информации о системе, поскольку программа запущена. Когда прослеженная программа заканчивается,
поспешно
Перечисляет информацию о системе в окне терминала.
Системные вызовы обеспечивают все виды низкоуровневых функций, таких как чтение и запись действий по файлам, процессам убийства и так далее. Есть список сотен системных вызовов на Сеткаллов человек страница Отказ
СВЯЗАННЫЕ С: Отладка с GDB: Начало работы
Установка поровни
Если
поспешно
еще не установлен на вашем компьютере, вы можете установить его очень легко.
На Ubuntu используйте эту команду:
Sudo APT Установка Stand
На Fedora введите эту команду:
Sudo DNF Установить stroad
На Манджаро команда:
Sudo Pacman -sy stroce
Первые шаги с stroace
Мы будем использовать небольшую программу для демонстрации
поспешно
Отказ Это не делает много: открывает файл и записывает линию текста к ней, и у него нет никакой проверки ошибок. Это просто быстрый взлом, чтобы у нас есть что использовать с
поспешно
Отказ
#include & lt; stdio.h & gt;
INT MAIN (INT ARGC, CHAR ARGV []) {
// дескриптор файлов
Файл * filegeek;
// Откройте файл под названием «stroace_demo.txt» или создать его
filegeek = fopen ("stroace_demo.txt", "w");
// Написать какой-нибудь текст в файл
fprintf (filegeek, "напиши это в файл");
// Закрыть файл
fclose (filegeek);
// Выход из программы
возврат (0);
} // конец главного
Мы сохранили это в файл под названием «File-IO.c» и скомпилировали его с
GCC.
в исполняемый файл
стержень
, названный для "
ул
гонка
бывший
достаточно ».
GCC -O STEX File-IO.C
Мы позвоним
поспешно
Из командной строки и передайте имя нашего нового исполняемого для него в качестве процесса, который мы хотим проследить. Мы могли бы так же легко проследить любую из команд Linux или любого другого файла двоичных файлов. Мы используем нашу крошечную программу по двум причинам.
Первая причина в том, что
поспешно
многословный. Может быть много выходов. Это здорово, когда вы используете
поспешно
В гневе, но он может быть подавляющим сначала. Там ограничено
поспешно
Выход для нашей крошечной программы. Вторая причина в том, что наша программа имеет ограниченную функциональность, и исходный код короткий и простой. Это облегчает идентификацию, какие разделы выхода относятся к различным частям внутренних разработок программы.
stroce ./stex
Мы можем ясно видеть
записывать
Системный вызов Отправка текста «Напишите это в файл» на наш открытый файл и
exit_group.
Системный вызов. Это завершает все потоки в приложении и отправляет возвращаемое значение обратно в оболочку.
Фильтрация выхода
Даже с нашей простой демонстрационной программой довольно много выходов. Мы можем использовать
-Е.
(выражение) вариант. Мы перейдем во имя системного вызова, которую мы хотим увидеть.
stroce --e написать ./stex
Вы можете сообщить о нескольких системных вызовах, добавив их в виде списка разделенного запятую. Не включайте пробел в списке системных вызовов.
stroce --e закрыть, пишите ./stex
Отправка вывода в файл
Преимущество фильтрации Вывод также является проблемой фильтрацией выхода. Вы видите, что вы попросили увидеть, но вы ничего не видите. И некоторые из этих других продуктов могут быть более полезными для вас, чем на материал, которые вы попросили увидеть.
Иногда все удобнее захватывать и искать и прокручивать весь набор результатов. Таким образом, вы не будете случайно исключить что-либо важное. То
-О
(выходной) опция позволяет отправить вывод из
поспешно
сеанс в текстовый файл.
stroace-trace-appys.txt ./stex
Вы можете тогда
использовать
меньше
команда
Чтобы прокрутить список и поиск системных вызовов - или что-нибудь еще - по имени.
Меньше трассировки-вывода. Atxt
Теперь вы можете использовать все
меньше
Поисковые возможности для исследования вывода.
СВЯЗАННЫЕ С: Как использовать меньше команды на Linux
Добавление временных метров
Вы можете добавить несколько разных временных метров на выход. То
-р
(относительные метки времени) Опция добавляет временные метки, которые показывают разницу времени между началом каждой последовательной системой вызова. Обратите внимание, что эти значения времени будут включать в себя время, проведенное в предыдущем системе, и что-то еще, что программа выполняла до следующего системного вызова.
stroace -r ./stex
Температуры отображаются в начале каждой линии вывода.
Чтобы увидеть количество времени, проведенного в каждом системном вызове, используйте
-Та
(Syscall-Times) вариант. Это показывает продолжительность времени, проведенного в каждом системном вызове.
stroace -t ./stex
Продолжительность времени показаны в конце каждой линии системы вызова.
Чтобы увидеть время, на котором называли каждый системный вызов, используйте
-та
(абсолютные метки времени). Это показывает «настенные часы» время с разрешением микросекунда.
stroace -tt ./stex
Время отображаются в начале каждой строки.
Прослеживание проработанного процесса
Если процесс, который вы хотите отслеживать, уже работает, вы все еще можете прикрепить
поспешно
к этому. Для этого вам нужно знать идентификатор процесса. Вы можете
использовать
PS.
с участием
овладеть
найти это. У нас работает Firefox. Чтобы узнать идентификатор
Fire Fox
процесс, мы можем использовать
PS.
а также
проводить его через
овладеть
Отказ
PS -E | Greep Firefox
Мы можем видеть, что идентификатор процесса 8483. Мы будем использовать
-п
(процесс процесса), чтобы сказать
поспешно
какой процесс к прикреплению к. Обратите внимание, что вам нужно будет использовать
Sudo.
:
sudo stroace -p 8483
Вы увидите уведомление о том, что
поспешно
Присоединился к процессу, а затем система трассировки системы будет отображаться в окне терминала как обычно.
Создание доклада
То
-с
(только суммарное) вариант вызывает
поспешно
распечатать отчет. Он генерирует таблицу для получения информации о системных вызовах, которые были сделаны прослеживаемой программой.
stroace -c ./stex
Столбцы:
- % время : Процент времени исполнения, который был потрачен в каждом системном вызове.
- секунды : Общее время, выраженное в секундах и микросекундам, потраченным в каждом системном вызове.
- usecs / call. : Среднее время в микросекундах, потраченных в каждом системном вызове.
- вызовы : Количество раз, когда каждый системный вызов был выполнен.
- ошибки : Количество сбоев для каждого системного вызова.
- сияние : Имя системы вызова.
Эти значения покажут нули для тривиальных программ, которые выполняют и быстро прекращаются. Значения реальных мировых показан для программ, которые делают что-то более значимое, чем наша демонстрационная заявка.
Глубокие идеи, легко
То
поспешно
Выход может показать, какие системные вызовы сделаны, какие из них изготавливаются неоднократно, и сколько времени выполнения проводится внутри кода ядра. Это отличная информация. Зачастую, когда вы пытаетесь понять, что происходит внутри вашего кода, легко забыть, что ваш двоичный бинарный взаимодействует почти некостерство с ядром для выполнения многих его функций.
Используя
поспешно
, вы видите полную картину.