×
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).

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

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

Showing 1-10 of 125 items.
27.04.2013
№216.012.3bcf

Непрерывно электрически управляемая линзовая антенна

Изобретение относится к устройствам, обеспечивающим управление шириной главного лепестка диаграммы направленности антенны без механического манипулирования антенной или ее частями. В линзовой антенне линзовый элемент выполнен из ферроэлектрического материала, антенна включает в себя: круглую...
Тип: Изобретение
Номер охранного документа: 0002480872
Дата охранного документа: 27.04.2013
10.05.2013
№216.012.3e74

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

Изобретение может быть использовано при измерении геометрических параметров нанообъектов путем исследования рассеянного излучения при сканировании объектов. Оптическая измерительная система содержит: оптический модуль освещения и регистрации изображения, модуль управления параметрами оптической...
Тип: Изобретение
Номер охранного документа: 0002481555
Дата охранного документа: 10.05.2013
10.05.2013
№216.012.3ec4

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

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

Беспроводной электромагнитный приемник и система беспроводной передачи энергии

Изобретение относится к области электрорадиотехники, а более конкретно - к системам и компонентам, предназначенным для беспроводной передачи энергии. Технический результат - повышение получаемой мощности путем увеличения добротности приемника. Предложена система беспроводной передачи энергии,...
Тип: Изобретение
Номер охранного документа: 0002481689
Дата охранного документа: 10.05.2013
10.05.2013
№216.012.3f04

Резонансная структура на основе объемного акустического резонатора

Изобретение относится к области электрорадиотехники, к системам беспроводной передачи энергии. Достигаемый технический результат - создание резонансной структуры для беспроводной передачи или приема энергии, обладающей малыми размерами и высокой добротностью при работе в частотном диапазоне...
Тип: Изобретение
Номер охранного документа: 0002481699
Дата охранного документа: 10.05.2013
10.05.2013
№216.012.3f09

Беспроводной электромагнитный приемник и система беспроводной передачи энергии

Изобретение относится к беспроводной передачи энергии, а именно к системам и устройствам, применяемым для беспроводной передачи энергии. Технический результат - увеличение получаемой энергии путем увеличения добротности приемника. Система беспроводной передачи энергии, содержащая источник...
Тип: Изобретение
Номер охранного документа: 0002481704
Дата охранного документа: 10.05.2013
10.05.2013
№216.012.3f0a

Беспроводной электромагнитный приемник и система беспроводной передачи энергии

Изобретение относится к беспроводной передачи энергии, а именно к системам и устройствам, применяемым для беспроводной передачи энергии. Технический результат - повышение принимаемой мощности путем увеличения добротности приемника. Система беспроводной передачи энергии, содержащая источник...
Тип: Изобретение
Номер охранного документа: 0002481705
Дата охранного документа: 10.05.2013
27.07.2013
№216.012.5b2e

Способ детектирования сигнала в системах связи с mimo каналом

Изобретение относится к области связи, в частности к радиотехническим беспроводным коммуникационным системам. Технический результат состоит в повышении точности приема информации. Для этого в системах связи с MIMO формируют оценку принятого вектора QAM символов и вычисляют матрицу ковариации;...
Тип: Изобретение
Номер охранного документа: 0002488963
Дата охранного документа: 27.07.2013
10.08.2013
№216.012.5c39

Способ осаждения наночастиц золота на микросферы кремнезема

Изобретение относится к области физической химии и может быть использовано в производстве фотонных кристаллов с заданными физическими свойствами. Сущность: подложку с предварительно нанесенными микросферами кремнезема помещают в реактор. Вакуумируют реакционную камеру до 10 торр. Затем подложку...
Тип: Изобретение
Номер охранного документа: 0002489230
Дата охранного документа: 10.08.2013
20.08.2013
№216.012.61ee

Способ ускорения обработки множественных запросов типа select к rdf базе данных с помощью графического процессора

Изобретение относится к технологиям обработки информации, а более конкретно - к способам обеспечения доступа к информации, хранящейся в базах данных. Техническим результатом является увеличение пропускной способности сервера обработки запросов. Заявлен способ параллельной обработки...
Тип: Изобретение
Номер охранного документа: 0002490702
Дата охранного документа: 20.08.2013
+ добавить свой РИД