Трассировка системных вызовов с strace и ltrace
Углубите изучение диагностики: отслеживайте системные вызовы и вызовы библиотек, которые выполняет процесс, чтобы точно определить, где он останавливается или завершается с ошибкой
«Трассировка системных вызовов с strace и ltrace» — бесплатный урок Linux Command Line Mastery на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Command Line Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Command Line Mastery содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
When Metrics Are Not Enough
CPU, memory, and I/O tools tell you that something is slow. To learn why, you trace what a process actually asks the kernel to do. strace and ltrace open that window.
What strace Shows
strace records every system call: file opens, reads, network sends, and their return values, including errors.
strace ls /tmpAttaching to a Running Process
Use -p PID to trace something already running, such as a stuck service.
sudo strace -p 4567Filtering Specific Calls
-e trace= limits output to calls you care about, e.g. only file-related ones.
strace -e trace=openat,read,write cat /etc/hostnameFinding Missing Files
A classic use: see which file a program fails to open. Look for ENOENT (no such file) in the output.
strace -e trace=openat myapp 2>&1 | grep ENOENTSummarizing with -c
-c prints a profile: which syscalls consumed the most time and how often each was called.
strace -c ls -R /usr/shareTiming Calls
-T shows how long each syscall took, and -t adds timestamps, pinpointing where a process blocks.
strace -T -e trace=read myappFollowing Child Processes
-f follows forks so you trace child processes too, essential for servers that spawn workers.
strace -f -p 4567Saving Output to a File
Traces are noisy; -o writes them to a file you can grep later without cluttering the terminal.
strace -o trace.log -f myappltrace for Library Calls
While strace shows kernel calls, ltrace shows library calls like malloc or strcmp, useful for logic-level debugging.
ltrace ./myprogramA Troubleshooting Recipe
When a service hangs: attach with strace -f -p, watch for a syscall that never returns (often a blocked read or connect), and you have found the stall.
Quick Check
What kind of activity does strace primarily reveal?
Recap
You can now trace a process at the syscall level:
strace cmdor-p PIDto attach-e trace=filters,-cprofiles,-T/-ttime-ffollows children,-osaves outputltraceshows library calls
Watch for errors like ENOENT or a syscall that never returns.
Часто задаваемые вопросы
Урок «Трассировка системных вызовов с strace и ltrace» бесплатный?
Да — полный текст урока «Трассировка системных вызовов с strace и ltrace» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Command Line Mastery, подпишись на CoddyKit PRO. Курс Linux Command Line Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Трассировка системных вызовов с strace и ltrace»?
Углубите изучение диагностики: отслеживайте системные вызовы и вызовы библиотек, которые выполняет процесс, чтобы точно определить, где он останавливается или завершается с ошибкой Ты практикуешь Linux Command Line Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Command Line Mastery?
Предыдущий опыт не требуется. Linux Command Line Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Трассировка системных вызовов с strace и ltrace»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Command Line Mastery?
Да. Каждый урок Linux Command Line Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Мониторинг дискового ввода-вывода: `iostat`, `iotop`
- Инструменты анализа производительности памяти и CPU
- Расширенное журналирование и методы устранения неполадок
- Трассировка системных вызовов с strace и ltrace