<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Debugging on Lead DevOps</title><link>https://lead-devops.blackdevhub.online/tags/debugging/</link><description>Recent content in Debugging on Lead DevOps</description><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Fri, 18 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://lead-devops.blackdevhub.online/tags/debugging/index.xml" rel="self" type="application/rss+xml"/><item><title>coredumpctl: найти падение бинаря</title><link>https://lead-devops.blackdevhub.online/posts/coredumpctl-naiti-padenie-binarya/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/coredumpctl-naiti-padenie-binarya/</guid><description>&lt;h2 id="что-такое-coredumpctl-и-как-он-работает"&gt;Что такое coredumpctl и как он работает&#10;&lt;/h2&gt;&#10;&lt;p&gt;Когда бинарь падает с SEGV, ядро может сохранить core dump — снимок памяти процесса в момент креша. В systemd-based дистрибутивах за сбор, хранение и поиск этих дампов отвечёт &lt;code&gt;coredumpctl&lt;/code&gt;, обёртка над &lt;code&gt;systemd-coredump&lt;/code&gt;. Он хранит дампы в &lt;code&gt;/var/lib/systemd/coredump/&lt;/code&gt; и индексирует метаданные через journald.&lt;/p&gt;&#10;&lt;div class="td-callout td-callout--note" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-circle-info" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Примечание&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;Для работы нужен &lt;code&gt;systemd-coredump&lt;/code&gt; и включённый journald. В минимальных контейнерах без systemd этот инструмент недоступен.&lt;/p&gt;</description></item><item><title>curl: отладка HTTP в терминале</title><link>https://lead-devops.blackdevhub.online/posts/curl-http-debugging-cli/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/curl-http-debugging-cli/</guid><description>&lt;p&gt;cURL — стандартный инструмент отладки HTTP в терминале. Работает из коробки в Linux и macOS, есть в большинстве Docker-образов. Если нужно быстро проверить API, посмотреть заголовки ответа или отловить проблему с редиректом — одной строки достаточно.&lt;/p&gt;&#10;&lt;h2 id="базовые-флаги-отладки"&gt;Базовые флаги отладки&#10;&lt;/h2&gt;&#10;&lt;p&gt;Самый частый сценарий — получить ответ и увидеть, что сервер отдал. Ключ &lt;code&gt;-i&lt;/code&gt; выводит заголовки перед телом, &lt;code&gt;-v&lt;/code&gt; включает подробный режим с деталями соединения.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-38d1e288-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-38d1e288-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -i https://api.example.com/health&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -v https://api.example.com/health&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Разница: &lt;code&gt;-i&lt;/code&gt; показывает заголовки + тело, &lt;code&gt;-v&lt;/code&gt; добавляет DNS-резолв, TLS-handshake и отладочную информацию до запроса.&lt;/p&gt;</description></item><item><title>lsof: какие процессы слушают порт и держат файл</title><link>https://lead-devops.blackdevhub.online/posts/lsof-port-file-processes/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/lsof-port-file-processes/</guid><description>&lt;p&gt;Сервис не стартует — порт 8080 занят. Разбираешься, кто именно его держит, и попутно выясняется, что тот же процесс держит конфиг, который ты хотел отредактировать. lsof отвечает на оба вопроса: какие процессы открыли файлы и сокеты.&lt;/p&gt;&#10;&lt;h2 id="слушающие-порты"&gt;Слушающие порты&#10;&lt;/h2&gt;&#10;&lt;p&gt;Классическая задача — найти, кто слушает конкретный порт.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-99ae9cf6-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-99ae9cf6-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lsof -i -n -P&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Флаг&lt;/th&gt;&#10; &lt;th scope="col"&gt;Действие&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;-i&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Показать интернет-сокеты&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Без DNS-резолва (IP вместо hostname)&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;-P&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Без преобразования портов (80 вместо http)&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Без &lt;code&gt;-n -P&lt;/code&gt; lsof тратит время на DNS и резолвит порты в имена сервисов из /etc/services. На продакшене это лишние секунды.&lt;/p&gt;</description></item><item><title>strace: трассировка системных вызовов для диагностики зависаний и утечек</title><link>https://lead-devops.blackdevhub.online/posts/strace-syscall-troubleshooting/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/strace-syscall-troubleshooting/</guid><description>&lt;p&gt;При зависании сервиса стандартные инструменты — top, htop, ps — показывают состояние, но не причину. Если процесс в state D (uninterruptible sleep), значит он ждёт syscall. strace подключается к живому процессу и выводит каждый системный вызов в реальном времени. Это превращает загадочное зависание в конкретный syscall, его аргументы и код возврата.&lt;/p&gt;&#10;&lt;div class="td-callout td-callout--note" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-circle-info" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Примечание&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;strace работает через ptrace — механизм ядра для отладки. На продакшене трассировка замедляет процесс в 2–10 раз. Используйте точечно, на отдельном PID.&lt;/p&gt;</description></item><item><title>ngrep: grep по сетевым пакетам в реальном времени</title><link>https://lead-devops.blackdevhub.online/posts/ngrep-setevoy-grep/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://lead-devops.blackdevhub.online/posts/ngrep-setevoy-grep/</guid><description>&lt;p&gt;Ngrep — утилита, которая ищет паттерны в сетевых пакетах так же, как grep ищет строки в файлах. Когда нужно понять, что конкретно передаётся по сети между двумя сервисами, а tcpdump выдаёт слишком много шума, ngrep позволяет отфильтровать только нужное содержимое.&lt;/p&gt;&#10;&lt;h2 id="установка"&gt;Установка&#10;&lt;/h2&gt;&#10;&lt;p&gt;Ngrep есть в стандартных репозиториях большинства дистрибутивов.&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-a9b0bdab-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="8"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-a9b0bdab-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Debian/Ubuntu&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install ngrep&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RHEL/CentOS/Alma&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yum install ngrep&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# macOS&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install ngrep&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Для работы требует root-привилегий илиcapabilities &lt;code&gt;CAP_NET_RAW&lt;/code&gt; и &lt;code&gt;CAP_NET_ADMIN&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>