Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016) — различия между версиями

Материал из 0x1.tv

(Расширенные тезисы)
\EN{\emph{seccomp}}. Другой особенностью данного примера является
формат вывода команд \EN{BPF}, которые являют собой структуры, но для которых в
\EN{\texttt{<linux/filter.h>}} определены макрокоманды для их определения в
коде на языке Си; декодер системного вызова определяет по содержимому структур
подходяющую макрокоманду и печатает соответствующую макрокоманду.

На следующей иллюстрации отметим формат вывода
третьего аргумента, \EN{\emph{vec}}, который представляет собой массив байт, из
каждого из которых значащий только один бит. На иллюстрации~\ref{fig:listen}

\begin{figure}[h!]
\centering
\begin{small}
\begin{verbatim}mincore(0x2ba1f6293000, 131073, [11111111111111111111...]) = 0\end{verbatim}
\end{small}
\squeeze
\caption{Пример отображения информации о системном вызове \EN{\emph{mincore}}}\label{fig:mincore}
\squeeze
\end{figure}

На следующей иллюстрации интересен формат вывода,
 используемый для файловых дескрипторов (первый аргумент).
\begin{figure}[h!]
\centering
\begin{small}
\begin{verbatim}listen(3<TCP:[4490622]>, 1) = 0\end{verbatim}
\end{small}
\squeeze
\caption{Пример отображения информации о системном вызове \EN{\emph{listen}}}\label{fig:listen}
\squeeze
\end{figure}

А в примере на следующем рисунке, можно отметить специфический формат,
  \item[--] И, главное, выделение процесса форматирования вывода в отдельную сущность
            позволило реализовать то, ради чего затевался переход на структурированный
            вывод~--- форматирование вывода в машиночитаемом виде. В качестве примера такого
            формата был выбран \EN{JSON}. Заложенная архитектура позволяет
            просто реализовывать дополнительные машиночитаемые и человекочитаемые
            синтаксисы. В качестве возможных вариантов есть
            \EN{pcap}/\EN{pcapng}~\cite{pcapng}, \EN{YAML}.
\end{itemize}

\subsection{</latex>

=== Текущее состояние} ===
<latex>
Работы по переходу на структурированный вывод ещё не закончены.
К настоящему моменту стабилизирован API структурного
вывода~\cite{readme-structured}, сконвертировано примерно 65\% декодеров
системных вызовов, реализованы выводы в форматах \EN{legacy} и \EN{JSON},
реализована базовая проверка, является ли вывод в формате \EN{JSON} корректным
\EN{JSON} (проверка на отсутствие остатков непосредственных вызовов функций
печати). Регулярно производится \EN{\texttt{git rebase}} на \EN{master}-ветку
\EN{\emph{strace}}. Из несделанного~--- помимо оставшихся декодеров

Версия 14:58, 9 октября 2016

Аннотация

Докладчик
Эльвира Хабирова.jpg
Эльвира Хабирова

strace --- утилита для отладки программ. Она отображает сделанные отлаживаемым процессом tracee системные вызовы, пришедшие ему сигналы, изменения его состояния и пр.

Вывод strace на данный момент нацелен на человекочитаемость и по этой причине тяжело поддается автоматической обработке.

Кроме того, из-за отсутствия единой системы вывода в выводе могут присутствовать неточности, что еще сильнее усложняет задачу.

Поэтому в рамках GSoC~2016 проблема автоматической обработки была решена разработкой такой единой системы.

Как результат, стало возможным легко встраивать не только подсистемы любого формата вывода, но и дополнительные слои логики.


Видео

Слайды

Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016).pdf

Расширенные тезисы

Обзор проблемы

Идея структурированного вывода


Strace-lp0-conversion.svg

Второй важной особенностью является введение промежуточного представления системного вызова:

Strace-scheme.svg


Текущее состояние

Примечания и отзывы