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

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

(Новая страница: «== Аннотация == ;Докладчик: {{Speaker|Эльвира Хабирова}} <blockquote> <tt>strace</tt> --- утилита для отладки п…»)
 
(Расширенные тезисы)
\subsection{Идея структурированного вывода}
Итак, количество техник вывода, применяемых в \EN{\emph{strace}},
с одной стороны, велико и разнообразно (вывод битовых масок, масок
сигналов, различные варианты аббревиирования структур), с другой, всё же
поддаётся классификации (есть некие общие правила вывода структур, указателей,
массивов). В основе структурированного вывода лежит идея, что все особенности
формата вывода можно оформить в виде \EN{reusable}
примитивов и использовать для вывода только их. Пример преобразования декодера
показан на иллюстрации~\ref{fig:conversion}.

\begin{figure}[h]
  \centering
  \includegraphics[width=0.95\textwidth]{img/lp0-conversion}
\caption{Преобразование декодера системного вызова на примере
\EN{\emph{swapon}}}\label{fig:conversion}
\squeeze
\end{figure}
\begin{figure}[h]
  \centering
  \includegraphics[width=0.9\textwidth]{img/lp0-structured}
\caption{Схема работы структурированного вывода}\label{fig:scheme}
\squeeze
\end{figure}:
</latex>


[[File:strace-lp0-conversion.svg|center]]

Второй важной особенностью является
введение промежуточного представления системного вызова (см.~рис.~\ref{fig::

[[File:strace-scheme}).svg|center]]



<latex>
Декодер заполняет это внутреннее представление, и оно может потом быть
выведено независимо.
%На данный момент код, выводящий его в определенном
%формате, называется \EN{formatter}.

Переход к структурированному выводу позволяет избежать многочисленных однотипных
вызовов печати (запятые, скобки, знаки равенства) и связанных с этим
потенциальных багов.

Разделение процесса декодирования и вывода позволяет
внедрить возможности, которые ранее были затруднительны в
реализации. Например:

Версия 15:35, 3 октября 2016

Аннотация

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

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

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

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

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

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


Видео


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


Strace-lp0-conversion.svg

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

Strace-scheme.svg


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