
Купил сегодня вентилятор для малины (raspberry pi) на 12v и только потом понял, что на борту платы есть лишь 3v и 5v. Короче собрал из старого и нового один рабочий, взлетело, хорошо быть инженером.
Ладно, давай про strace. Сегодня научимся смотреть что запускает программа и с какими параметрами она это запускает.
Возьмем для испытаний программу man и распотрошим её.
Команда man позволяет получить доступ к общей базе справки по команде, функции или программе. Обычно для просмотра справки программе надо передать название команды или другого объекта в системе.
Екзекутим такую штуку:
Давай теперь по ключам, а потом уже разберемся что произошло.
s = длина выводимой строки
f = отслеживаем дочерние процессы
e = какой системный вызов отслеживаем
o = куда сохраним результаты трассировки
Если не указывать ключ «o», то результаты запишутся в стандартный поток STDERR.
И чо? А ничо, давай смотреть результаты, которые записались в файл с именем logs.
Вот таким образом мы узнали какие утилиты и с какими аргументами запускается программа man для распаковки и форматирования man страниц.
То есть ты можешь отдебажить свою собственную программу, которая запускает какие-то внешние утилиты и т.п. И посмотреть что конкретно она запускает и с какими параметрами. Я так недавно php дебажил, который запускал ffmpeg из скрипта.
Ладно, пойду дальше пиво пить. Не отвлекаю, увидимся!
UPD: Кстати чтобы сделать cat красивым, как на картинке, читай это.
tags: #bash #linux #debug
—
💩 @bashdays
Ладно, давай про strace. Сегодня научимся смотреть что запускает программа и с какими параметрами она это запускает.
Возьмем для испытаний программу man и распотрошим её.
Команда man позволяет получить доступ к общей базе справки по команде, функции или программе. Обычно для просмотра справки программе надо передать название команды или другого объекта в системе.
Екзекутим такую штуку:
strace -o logs -s1024 -fe execve man bashАга, запустилось. Перед тобой открылась страница помощи bash. Что дальше. Дальше нажимаешь клавишу «q», все это дело закрывается.
Давай теперь по ключам, а потом уже разберемся что произошло.
s = длина выводимой строки
f = отслеживаем дочерние процессы
e = какой системный вызов отслеживаем
o = куда сохраним результаты трассировки
Если не указывать ключ «o», то результаты запишутся в стандартный поток STDERR.
И чо? А ничо, давай смотреть результаты, которые записались в файл с именем logs.
cat logsНа экран вывелись результаты трассировки команды man. На картинке к этому посту, можешь посмотреть результат.
Вот таким образом мы узнали какие утилиты и с какими аргументами запускается программа man для распаковки и форматирования man страниц.
То есть ты можешь отдебажить свою собственную программу, которая запускает какие-то внешние утилиты и т.п. И посмотреть что конкретно она запускает и с какими параметрами. Я так недавно php дебажил, который запускал ffmpeg из скрипта.
Ладно, пойду дальше пиво пить. Не отвлекаю, увидимся!
UPD: Кстати чтобы сделать cat красивым, как на картинке, читай это.
tags: #bash #linux #debug
—