TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #645 2.04K
🔄 strace и ltrace: отладка процессов

Часто возникает ситуация: программа подвисает, работает странно или вообще не запускается. В таких случаях на помощь приходят два инструмента - strace и ltrace. Оба они позволяют заглянуть внутрь процесса, но делают это на разных уровнях.

▪️ strace - системные вызовы. strace перехватывает системные вызовы, которые делает процесс, и возвращаемые значения. Это удобно для анализа проблем с доступом к файлам, сетевыми подключениями или зависаниями.

📍 Запуск с приложением:


strace ls /nonexistent


Вывод покажет, что ls пытается открыть директорию и получает ENOENT (нет такого файла).

📍 Подключение к уже работающему процессу:


strace -p 1234


Теперь видно, чем занимается процесс с PID 1234.

📍 Фильтрация вызовов:


strace -e open,read,write -p 1234


Будут показаны только вызовы open, read, write.

▪️ ltrace - вызовы библиотек. Если strace работает с системными вызовами ядра, то ltrace отслеживает вызовы функций библиотек. Это особенно полезно, если программа спотыкается не на уровне ядра, а на уровне glibc или других библиотек.

📍 Пример:


ltrace ls


Вы увидите вызовы функций вроде malloc(), strlen(), fopen().

📍 Фильтрация по конкретным функциям:


ltrace -e malloc,free ./myprog


Будут показаны только вызовы функций управления памятью.

▪️ Совместное применение. Часто эти инструменты используют вместе:

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

▪️ Практические кейсы

📍 Отладка зависающих процессов:


strace -p <PID>


Сразу видно, ждёт ли программа I/O или зациклилась.

📍 Диагностика ошибок "файл не найден":


strace ./prog 2>&1 | grep ENOENT


Можно увидеть, какой именно файл не удаётся открыть.

📍 Поиск утечек памяти:


ltrace -e malloc,free ./prog


Если много malloc(), но мало free() - повод задуматься.

#linux #debug

🧑‍💻 NetworkAdmin
  • 👍 9
  • ❤ 1
More from @networkadminru
  1. Oct 1, 2026✨ Systemd-команды, которые быстро дают информацию о системе У systemd есть несколько коман…
  2. Oct 1, 2026CENTI CONF: DevOps Day — митап по разработке и инженерным решениям ⚡️ 6 ноября Centicore G…
  3. Sep 30, 2026🖥 Get-ADUser: полезные примеры для работы с пользователями Active Directory Get-ADUser -…
  4. Sep 30, 2026👁‍🗨 Хочешь разбираться в информационной безопасности, а не просто копировать чужие коман…
  5. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  6. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →