СПОСОБ ТРАССИРОВКИ ВЫЗОВОВ БИБЛИОТЕК Российский патент 2009 года по МПК G06F12/00 

Описание патента на изобретение RU2374680C1

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

Обычные приложения для встроенных систем используют динамически компонуемые библиотеки для выполнения стандартных операций или действий, которые могут потребоваться в других приложениях. Для оптимизации порядка расположения функций в библиотеках применяют способы трассировки вызовов библиотек, в которых производят сбор данных о вызовах функций из библиотек. Собранные данные могут быть использованы для улучшения порядка расположения вызовов функций или улучшения порядка расположения вызовов функций в библиотеках или других приложениях, которым требуются данные о порядке расположения функций.

Приложения, в которых применяют динамически компонуемые библиотеки для трассировки вызовов функций, традиционно используют динамический компоновщик. Динамический компоновщик вычисляет адреса функций для применения в приложении. Сама динамическая библиотека отображается в адресное пространство приложения и становится пригодной для загрузки в произвольный адрес.

Как правило, если приложение (Фиг.1) вызывает функцию из динамически компонуемой библиотеки, то в ответ получает действительный адрес функции из специальной таблицы, которая содержит адреса функции в адресном пространстве приложения. Обычно данная таблица называется Global Offset Table (GOT) и заполняется динамическим компоновщиком. Для уменьшения времени начальных вычислений адресов для GOT динамический компоновщик вычисляет их в момент первого вызова функции. Эта технология называется «ленивая компоновка» ("lazy linking"). Основы этой технологии изложены в следующих публикациях: Phillip W.L. Fong, et al., "Proof Linking: An Architecture for Modular Verification of Dynamically-Linked Mobile Code" School of Computing Science, Simon Fraser University, B.C., Canada, Sigsoft, Nov. 1998, pp.222-230. [1]. Luca Cardelli, "Program Fragments, Linking, and Modularization" Digital Equipment Corporation, System Research Center, POPL 97, Paris France. [2], Sheng Liang, et al., Dynamic Class Loading in the Java.TM. Virtual Machine Sun Microsystems, Inc. OOPSLA 10/98, Vancouver, B.C. [3].

В известных способах трассировки с использованием динамического компоновщика выполняют следующие действия. Сначала активируют динамический компоновщик. Компоновщик извлекает имя вызванной функции и вычисляет ее адрес. Затем этот адрес помещают в таблицу адресов вместо адреса функции входа в динамический компоновщик.

Наиболее близким к заявленному является способ трассировки событий входа в динамическую библиотеку и выхода из нее, описанный в патенте США №5946486 [4]. В этом патенте предложено устройство и способ трассировки событий, происходящих при входе в (или выходе из) библиотеку динамических связей (dynamic link library - DLL) без доступа или изменения исходного кода DLL. Этот способ предусматривает также создание «теневой» библиотеки динамических связей, предназначенной для перехвата запроса, поступающего из выполняемой программы.

Данный способ выбран в качестве прототипа заявленного изобретения.

Недостаток способа-прототипа заключается в необходимости использования скрытой («теневой») библиотеки, которая заменяет реальную библиотеку, что уменьшает быстродействие способа и увеличивает загруженность аппаратных ресурсов системы в случае большого числа библиотек и приложений.

Задачей, которая решается заявленным изобретением, заключатся в разработке способа трассировки вызовов библиотек с увеличенным быстродействием и сниженной загрузкой аппаратных ресурсов системы. Поставленная задача решена путем создания способа трассировки вызовов библиотек, заключающегося в выполнении следующих операций:

- выполняют активацию динамического компоновщика с сохранением целостности трассируемой программы,

- извлекают информацию об имени вызванных функций,

- извлекают информацию о последовательности вызова функций,

- осуществляют запись информации о последовательности компоновки функций в блоке памяти,

- осуществляют запись информации о вызванных функциях в блоке памяти.

Таким образом, технический результат достигается за счет сбора данных о вызовах функций при помощи динамического компоновщика времени выполнения без рекомпиляции модуля приложения или выполнения каких-либо действий с ним и при этом сохранения данных в любом доступном в системе средстве хранения данных, таком как флэш-память или ОЗУ. Этим обеспечивают повышение эффективности способа трассировки вызова библиотек и уменьшение загрузки аппаратных ресурсов.

Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующими чертежами.

Фиг.1 Схема выполнения трассировки вызовов библиотек с использованием динамического компоновщика, известная из уровня техники.

Фиг.2 Пошаговая схема выполнения способа трассировки с использованием динамического компоновщика, выполненная согласно изобретению.

Фиг.3 Схема системы трассировки вызовов библиотек с использованием динамического компоновщика, выполненная согласно изобретению.

В заявленном способе трассировки вызовов библиотек (см. Фиг.2) сначала активируют динамический компоновщик (шаг 1). Затем извлекают информацию об имени вызванной функции (шаг 2). Вычисляют адреса вызванной функции (шаг 3). Сохраняют данные о вызванной функции (шаг 4). Помещают адреса в таблицу адресов (шаг 5).

Компьютерная система (Фиг.3), в которой выполняют заявленный способ трассировки вызовов библиотек, содержит несколько компонентов. В их число входят библиотека 1 функций и непосредственно функциональный модуль 2, а также динамический компоновщик 3 и таблица 4 адресов, которые связаны с функциональным модулем 2. В заявленном способе динамический компоновщик 3 представлен модулем, который может произвести динамическую компоновку и сохранить данные об их порядке.

Когда приложение пытается выполнить динамически компонуемую функцию, оно получает адрес от таблицы GOT, соответствующий необходимой функции. До определения непосредственного адреса функции данная таблица содержит адреса входной функции динамического компоновщика. После входа во входную функцию динамический компоновщик получает адрес вызванной функции и связывает его с именем вызванной функции. На данной стадии компоновщик может использовать эти данные для сбора статистики.

Заявленное изобретение использует известное в данной области техники свойство сбора данных о порядке вызовов функций. Замена стандартного динамического компоновщика на модуль позволяет собирать данные о первых вызовах функций библиотек. Используемый в заявленном изобретении динамический компоновщик-модуль собирает данные о всех вызовах библиотек, при этом не снижается производительность при прямой инструментации.

Заявленный способ имеет несколько преимуществ. В нем выполняется сбор данных для всех приложений и всех библиотек встроенной системы. В нем не требуется рекомпиляции модуля приложения. В нем производится меньше операций, чем при инструментации, поскольку используется трассировка только первого вызова.

Система трассировки вызовов библиотек с использованием динамического компоновщика, в которой выполняется заявленный способ, может быть применена практически во всех компьютерных системах, в которых используются динамически компонуемые библиотеки, а также во встроенных системах с применением файлового формата ELF для сортировки библиотек и функциональных модулей. Для сортировки данных о последовательности вызовов может использоваться флэш-память или загруженное в память приложение.

Хотя указанный выше вариант выполнения изобретения был изложен с целью иллюстрации настоящего изобретения, специалистам ясно, что возможны разные модификации, добавления и замены, не выходящие из объема и смысла настоящего изобретения, раскрытого в прилагаемой формуле изобретения.

Похожие патенты RU2374680C1

название год авторы номер документа
СИСТЕМА И СПОСОБ ПРОЗРАЧНОЙ ТРАССИРОВКИ И ПРОФИЛИРОВАНИЯ ВИРТУАЛИЗИРОВАННЫХ ВСТРОЕННЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ 2008
  • Андреев Станислав Валерьевич
  • Драгальчук Владислав Константинович
  • Трофимов Александр Сергеевич
  • Левин Михаил Петрович
  • Сух Санг-Бум
RU2411571C2
СПОСОБ ДИНАМИЧЕСКОЙ ИНСТРУМЕНТАЦИИ 2008
  • Геренков Алексей Анатольевич
  • Горелкина Екатерина Анатольевна
RU2390831C1
СПОСОБ ДИНАМИЧЕСКОЙ КОМПОНОВКИ ПРОГРАММЫ НА ВСТРОЕННОЙ ПЛАТФОРМЕ И ВСТРОЕННАЯ ПЛАТФОРМА 2009
  • У Чжихуа
  • Гу Цзя
  • Цю Сюань
RU2473111C1
СПОСОБ ДИНАМИЧЕСКОЙ ИНСТРУМЕНТАЦИИ 2008
  • Геренков Алексей Анатольевич
  • Комков Леонид Владимирович
RU2390821C1
СИСТЕМА И СПОСОБ СРАВНЕНИЯ ФАЙЛОВ НА ОСНОВЕ ШАБЛОНОВ ФУНКЦИОНАЛЬНОСТИ 2009
  • Василенко Роман Сергеевич
RU2427890C2
СИСТЕМА И СПОСОБ РАСПРЕДЕЛЕННЫХ ВЫЧИСЛЕНИЙ 2010
  • Богданов Александр Яковлевич
RU2554509C2
СПОСОБ И СИСТЕМА ДЛЯ ЗАПИСИ МАКРОСОВ В СИНТАКСИСЕ, НЕЗАВИСИМОМ ОТ ЯЗЫКА 2004
  • Коул Дэвид Питер
  • Мэтью Абрахам
RU2347262C2
ЗАПИСЬ ТРАССИРОВКИ НА ОСНОВЕ КЭША С ИСПОЛЬЗОВАНИЕМ ДАННЫХ ПРОТОКОЛА КОГЕРЕНТНОСТИ КЭША 2018
  • Мола, Джорди
RU2775818C2
ЗАПИСЬ ТРАССИРОВКИ ПОСРЕДСТВОМ РЕГИСТРАЦИИ ВХОДЯЩИХ ПОТОКОВ В КЭШ НИЖНЕГО УРОВНЯ НА ОСНОВЕ ЭЛЕМЕНТОВ В КЭШЕ ВЕРХНЕГО УРОВНЯ 2019
  • Мола, Джорди
RU2773437C2
СИСТЕМА И СПОСОБ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ СИСТЕМНЫХ ОШИБОК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2012
  • Антух Александр Эдуардович
  • Маланов Алексей Владимирович
RU2521265C2

Иллюстрации к изобретению RU 2 374 680 C1

Реферат патента 2009 года СПОСОБ ТРАССИРОВКИ ВЫЗОВОВ БИБЛИОТЕК

Изобретение относится к области обработки цифровых данных с помощью электрических устройств, к устройствам функционального тестирования, а именно к способам трассировки вызовов библиотек, и может применяться для сбора статистических данных о вызовах функций из библиотек в приложении (программе) для встроенной компьютерной системы. Техническим результатом заявленного изобретения является увеличение быстродействия и снижение загрузки аппаратных ресурсов системы. Поставленный технический результат достигается путем создания способа трассировки вызовов библиотек, заключающегося в выполнении следующих операций: выполняют активацию динамического компоновщика с сохранением целостности трассируемой программы, извлекают информацию об имени вызванных функций, извлекают информацию о последовательности вызова функций, осуществляют запись информации о последовательности компоновки функций в блоке памяти, осуществляют запись информации о вызванных функциях в блоке памяти. 3 ил.

Формула изобретения RU 2 374 680 C1

Способ трассировки вызовов библиотек, заключающийся в выполнении следующих операций:
выполняют активацию динамического компоновщика с сохранением целостности трассируемой программы,
извлекают информацию об имени вызванных функций,
извлекают информацию о последовательности вызова функций,
осуществляют запись информации о последовательности компоновки функций в блоке памяти,
осуществляют запись информации о вызванных функциях в блоке памяти.

Документы, цитированные в отчете о поиске Патент 2009 года RU2374680C1

СИСТЕМА И СПОСОБ ПРОВЕРКИ ПОДЛИННОСТИ ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫХ ИСПОЛНЯЕМЫХ ОБРАЗОВ 2000
  • Бодров Дмитрий
RU2258252C2
RU 98120495 A, 20.09.2000
СИСТЕМА МОНИТОРИНГА ЗАПУЩЕННЫХ ПРОЦЕССОВ 2002
  • Щеглов А.Ю.
RU2234122C1
US 5946486 A, 31.08.1999
Пломбировальные щипцы 1923
  • Громов И.С.
SU2006A1
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек 1923
  • Григорьев П.Н.
SU2007A1
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор 1923
  • Петров Г.С.
SU2005A1
US 5454086 A, 26.09.1995
US 6367036 B1, 02.04.2002.

RU 2 374 680 C1

Авторы

Левин Михаил Петрович

Клочков Георгий Владимирович

Кривцов Михаил Иванович

Даты

2009-11-27Публикация

2008-07-04Подача