×
01.03.2019
219.016.cb3d

Результат интеллектуальной деятельности: СПОСОБ ДИНАМИЧЕСКОЙ ИНСТРУМЕНТАЦИИ

Вид РИД

Изобретение

№ охранного документа
0002390821
Дата охранного документа
27.05.2010
Аннотация: Изобретение относится к способам динамической инструментации. Техническим результатом является уменьшение объема ресурсов компьютерной системы, занимаемых при выполнении динамической инструментации. В способе выполняют этапы компиляции исследуемой программы с информацией об отладке и установки контрольной точки при поступлении запроса мониторинга переменной по определенному адресу. При этом между операциями компиляции исследуемой программы и вставки контрольной точки дополнительно выполняют следующие операции: извлекают адрес и информацию о переменной из бинарного кода с отладочной информацией в главной системе. При этом отделяют отладочную информацию от бинарного кода и уменьшают объем отладочной информации путем выбора из нее только необходимой информации и посылают извлеченную информацию программе трассировки на устройстве. При этом пользователь передает извлеченную информацию об адресах инструкций, месте расположения переменных и их размерах по назначению, а программа трассировки, используя уменьшенную отладочную информацию, задает контрольные точки и собирает данные из бинарного кода без отладочной информации во время выполнения программы. 2 з.п. ф-лы, 3 ил.

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

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

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

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

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

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

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

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

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

Система Dynlnst (см., например, http://www.dyninst.org/) [1] позволяет генерировать и динамически вставлять куски бинарного кода в выполняющуюся программу. Она может трассировать глобальные и локальные переменные путем генерации и вставки трассирующего кода в программу. Недостаток системы [1] заключается в том, что для ее функционирования необходимо наличие отладочной информации в инструментизируемых бинарных файлах, что сильно увеличивает размер этих файлов.

Известен способ трассировки данных в программе, предложенный в патенте США № 5,870,606 [2], в котором для каждого подлежащего трассировке элемента данных предлагают использовать прокси-объекты. Прокси-объекты перехватывают сообщения, посланные программой этим элементам данных. Такой способ имеет следующие недостатки:

- Требует изменения исходного кода, перекомпиляции и перезапуска программы для выполнения трассировки.

- В связи с необходимостью использования специальных прокси-объектов данный способ дополнительно перегружает память. Это может быть неприемлемо для встроенных систем.

- Данный способ не применим для определения ситуаций, в которых переменную случайно перезаписывают неверным кодом (переполнение буфера и т.д.).

В другом патенте США (см. № 5,347,649) [3] предложен способ, заключающийся в том, что вставляют дополнительный код в функции обработки данных для трассировки изменений данных. Такой способ имеет следующие недостатки:

- Требует изменения исходного кода, перекомпиляции и перезапуска программы для выполнения трассировки.

- Сложно применить данный способ для трассировки данных основных типов, таких как 1, 2 и 4-байтные переменные.

- Данный способ не применим для определения ситуаций, в которых переменную случайно перезаписывают неверным кодом (переполнение буфера и т.д.).

Наиболее близким к заявленному изобретению является способ трассировки данных в программе, который описан в патенте США № 6,769,117 [4]. Этот способ основан на динамической инструментации, что позволяет собирать аргументы и возвращаемые значения функций ядра, а также информацию о глобальных структурах ядра. Однако он не обеспечивает возможности сбора информации о локальных переменных.

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

- файлов с отладочной информацией;

- файлов без отладочной информации;

- файлов с неполной бинарной информацией.

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

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

- конфигурируют компьютерную систему;

- компилируют исследуемую программу с информацией об отладке в главной системе;

- вставляют контрольную точку при поступлении запроса мониторинга переменной по определенному адресу;

- переводят управление системы в режим ядра, когда при выполнении программы достигают контрольной точки;

- выполняют подпрограмму инструментации в пространстве ядра;

- считывают значение переменной, которое хранится в регистре процессора или в пространстве пользователя в памяти;

- пересылают значение переменной в программу трассировки;

- продолжают выполнение исследуемой программы;

при этом между операциями компиляции исследуемой программы и вставки контрольной точки дополнительно выполняют следующие операции:

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

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

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

Заявляемый способ динамической инструментации отличается от прототипа [4] уменьшенным объемом ресурсов (памяти) компьютерной системы, занимаемых при выполнении данного способа, за счет того, что для его выполнения не требуется отладочная информации инструментируемых бинарных файлов, а необходима только та отладочная информация, которая будет использована непосредственно для мониторинга программы, и с увеличенным быстродействием за счет того, что мониторинг программы производят во время ее выполнения и без перезагрузки системы.

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

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

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

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

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

Фиг.2. Схема трассировки данных в способе динамической инструментации согласно изобретению.

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

Фиг.3. Схема пошагового выполнения способа динамической инструментации согласно изобретению.

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

Рассмотрим подробное пошаговое выполнение предложенного способа (Фиг.1-3). Сначала конфигурируют компьютерную систему, по меньшей мере, с одним процессором, связанную с памятью. При этом компьютерная система содержит операционную систему, которая связана с процессором, данная операционная система работает в пространстве ядра и выполняет операции по команде одной или нескольких пользовательских программ, процессор выполняет действия для осуществления процесса сохранения локальных переменных, путем сохранения их значений в регистрах или в стеке (шаг 1). Затем компилируют исследуемую программу с информацией об отладке в главной системе (шаг 2). Извлекают адрес и информацию о переменной из бинарного кода с отладочной информацией в главной системе (шаг 3). На данном шаге отделяют отладочную информацию от бинарного кода и уменьшают ее объем путем выбора только нужной информации. Уменьшение объема отладочной информации достигается, в частности, путем выбора из всей информации об отладке только следующей информации: адреса инструкции, которая соответствует строке исходного кода (контрольной точке), места расположения переменной (переменная может быть занесена в стек, регистр или память) и размера переменной. Дополнительное уменьшение объема отладочной информации достигается путем выбора информации по специальному запросу пользователя (пользователь может запросить информацию о переменных с определенными именами). Кроме того, наличие данного шага позволяет использовать предложенный способ для встроенных систем в условиях ограниченных ресурсов. Посылают извлеченную информацию в программу трассировки на устройстве (шаг 4). На данном шаге пользователь передает извлеченную информацию об адресах инструкций (адреса контрольных точек), месте расположения переменных и их размерах по назначению. Программа трассировки использует уменьшенную отладочную информацию для задания контрольных точек и сбора данных из бинарного кода без отладочной информации во время выполнения исследуемой программы. Вставляют контрольную точку при поступлении запроса мониторинга переменной по определенному адресу (шаг 5). Переводят управление в режим ядра, когда при выполнении программы достигают контрольной точки (шаг 6). Выполняют подпрограмму инструментации в пространстве ядра (шаг 7). Считывают значение переменной, которое хранится в регистре процессора или в пространстве пользователя в памяти (шаг 8). Пересылают значение переменной в программу трассировки (шаг 9). Продолжают выполнение исследуемой программы (шаг 10).

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

Источник поступления информации: Роспатент

Показаны записи 21-30 из 125.
27.01.2014
№216.012.9d17

Способ и устройство кодирования и декодирования аудиосигналов (варианты)

Изобретение относится к способу сжатия цифровых сигналов, таких как аудиосигналы; а более конкретно к алгоритмам распределения бит, подстановке шума и адаптивному эффективному сжатию коэффициента квантования. Заявлен способ кодирования временного звукового сигнала, заключающийся в том, что...
Тип: Изобретение
Номер охранного документа: 0002505921
Дата охранного документа: 27.01.2014
10.02.2014
№216.012.a02c

Способ межкадрового прогнозирования для кодирования многоракурсной видеопоследовательности

Изобретение относится к вычислительной технике. Технический результат заключается в уменьшении объема служебной информации в области сжатия многоракурсных видеопоследовательностей с картами глубин. Способ межкадрового прогнозирования для кодирования многоракурсной видеопоследовательности, в...
Тип: Изобретение
Номер охранного документа: 0002506712
Дата охранного документа: 10.02.2014
20.02.2014
№216.012.a3ca

Сверхширокополосная малогабаритная антенна и устройство связи, содержащее такую антенну

Изобретение относится к области телекоммуникаций, а именно к сверхширокополосным (СШП) антеннам. Технический результат - обеспечение высокого значения коэффициента передачи в радиоканале между терминалами, находящимися на поверхности тела человека. Сверхширокополосная малогабаритная антенна,...
Тип: Изобретение
Номер охранного документа: 0002507645
Дата охранного документа: 20.02.2014
27.02.2014
№216.012.a764

Оптическое устройство с фурье преобразующими оптическими элементами для одношаговой записи нескольких микроголограмм с использованием призменных систем

Предложено оптическое устройство для параллельного пространственного формирования и записи массивов микроголограмм. Устройство содержит лазерный источник света, оптическое устройство для разделения исходного пучка на сигнальный и опорный, оптическую систему для ограничения и трансформации...
Тип: Изобретение
Номер охранного документа: 0002508567
Дата охранного документа: 27.02.2014
10.03.2014
№216.012.aa83

Система и способ преобразования тонов плоских и объемных изображений

Изобретение относится к средствам обработки цифровых изображений. Техническим результатом является повышение качества цифровых изображений за счет повышения глобального и локального контраста без формирования нежелательных артефактов и искажений. В способе выбирают функцию преобразования тонов...
Тип: Изобретение
Номер охранного документа: 0002509366
Дата охранного документа: 10.03.2014
10.03.2014
№216.012.aa8e

Способ и система и для просмотра изображения на устройстве отображения

Изобретение относится к системам и способам для просмотра и навигации по цифровому изображению, размеры которого превышают размеры экрана. Техническим результатом является обеспечение возможности более детального просмотра частей изображений за счет их масштабирования. Технический результат...
Тип: Изобретение
Номер охранного документа: 0002509377
Дата охранного документа: 10.03.2014
20.03.2014
№216.012.abe3

Оптическая измерительная система и способ измерения критического размера

Изобретение относится к измерительной технике и может быть использовано для измерения геометрических параметров нанообъектов. Оптическая измерительная система содержит модуль изменения и контроля параметров оптической схемы и условий освещения; модуль освещения; модуль построения оптического...
Тип: Изобретение
Номер охранного документа: 0002509718
Дата охранного документа: 20.03.2014
20.03.2014
№216.012.ad3a

Дисплей для адаптивного формирования трехмерных изображений

Дисплей включает модуль индивидуальной стереопроекции, расположенный на средстве движения с возможностью перемещения в произвольную точку оптической системы дисплея, блок формирования и предварительной обработки изображений, оптический элемент, формирующий область просмотра 3D изображений,...
Тип: Изобретение
Номер охранного документа: 0002510061
Дата охранного документа: 20.03.2014
20.03.2014
№216.012.ad3b

Способ обработки сигналов в сканирующих устройствах

Изобретение относится к области обработки сигналов в сканирующих устройствах, в частности оно касается способов обработки сигналов в сканирующем электронном микроскопе (СЭМ) и ему подобных устройствах с целью определения параметров пучка и коррекции этих параметров. Техническим результатом...
Тип: Изобретение
Номер охранного документа: 0002510062
Дата охранного документа: 20.03.2014
20.03.2014
№216.012.ad40

Проекционная оптическая система

Изобретение может быть использовано в портативных проекционных устройствах бытового и промышленного назначения. Оптическая система увеличивает изображение, сформированное модулятором изображения, и проецирует его на экран. Оптическая система включает линзовую оптическую систему, состоящую из,...
Тип: Изобретение
Номер охранного документа: 0002510067
Дата охранного документа: 20.03.2014
+ добавить свой РИД