Действительно структурированный вывод в strace (Эльвира Хабирова, OSSDEVCONF-2016) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) (Новая страница: «== Аннотация == ;Докладчик: {{Speaker|Эльвира Хабирова}} <blockquote> <tt>strace</tt> --- утилита для отладки п…») |
StasFomin (обсуждение | вклад) (→Расширенные тезисы) |
||
\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
Аннотация
- Докладчик
- Эльвира Хабирова
strace --- утилита для отладки программ. Она отображает сделанные отлаживаемым процессом tracee системные вызовы, пришедшие ему сигналы, изменения его состояния и пр.
Вывод strace на данный момент нацелен на человекочитаемость и по этой причине тяжело поддается автоматической обработке.
Кроме того, из-за отсутствия единой системы вывода в выводе могут присутствовать неточности, что еще сильнее усложняет задачу.
Поэтому в рамках GSoC~2016 проблема автоматической обработки была решена разработкой такой единой системы.
Как результат, стало возможным легко встраивать не только подсистемы любого формата вывода, но и дополнительные слои логики.
Видео
Расширенные тезисы
Второй важной особенностью является введение промежуточного представления системного вызова: