×
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 71-80 of 125 items.
27.10.2015
№216.013.8a27

Направленная сканирующая планарная портативная линзовая антенна

Изобретение относится к конструкции малогабаритных сканирующих антенн. Технический результат - разработка конструкции антенны с широким сканированием луча и с возможностью изготовления на основе печатной технологии. Для этого направленная сканирующая планарная портативная линзовая антенна...
Тип: Изобретение
Номер охранного документа: 0002566970
Дата охранного документа: 27.10.2015
20.12.2015
№216.013.9c15

Отклоняющая система для управления плоской электромагнитной волной

Изобретение относится к области телекоммуникационных технологий, а более конкретно - к устройствам для управления плоскими электромагнитными волнами. Технический результат заключается в обеспечении снижения величины управляющего напряжения и вносимых электромагнитных потерь. Отклоняющая система...
Тип: Изобретение
Номер охранного документа: 0002571582
Дата охранного документа: 20.12.2015
20.01.2016
№216.013.a260

Контекстно-адаптивное энтропийное кодирование с использованием кодирования серий высоковероятных символов

Изобретение относится к области обработки цифровых сигналов, в частности к сжатию данных и улучшению энтропийного кодирования видеопоследовательностей. Техническим результатом является повышение эффективности и снижение вычислительной сложности энтропийного кодирования. Способ обработки потока...
Тип: Изобретение
Номер охранного документа: 0002573210
Дата охранного документа: 20.01.2016
20.02.2019
№219.016.bf45

Способ улучшения карты диспарантности и устройство для реализации способа

Изобретение относится к способам обработки изображений. Способ включает в себя выполнение следующих операций: формируют исходную карту диспарантности путем присвоения исходных значений диспарантности каждому пикселю опорного цветного изображения; определяют недостоверные значения...
Тип: Изобретение
Номер охранного документа: 0002382406
Дата охранного документа: 20.02.2010
20.02.2019
№219.016.c257

Оптическая система связи с ножевидной подсветкой

Изобретение относится к области беспроводной оптической связи. Технический результат состоит в повышении эффективности передачи информации в системе беспроводной оптической связи. Для этого мобильное устройство выполнено с возможностью формирования передающего и приемного каналов, а...
Тип: Изобретение
Номер охранного документа: 0002456746
Дата охранного документа: 20.07.2012
20.02.2019
№219.016.c2ae

Устройство системы оптической связи с автоматическим сопровождением светового луча на приемнике информации

Изобретение относится к области оптической связи и может быть использовано в системах связи между различными устройствами, как мобильными, так и стационарными. Технический результат состоит в повышении помехозащищенности системы оптической связи. Для этого система содержит мобильное устройство,...
Тип: Изобретение
Номер охранного документа: 0002451397
Дата охранного документа: 20.05.2012
20.02.2019
№219.016.c332

Способ оценки канала передачи данных в системе беспроводной связи (варианты)

Изобретение относится к области радиотехники, в частности к способам оценки канала передачи данных в системе беспроводной связи. Технический результат заключается в повышении эффективности системы беспроводной связи путем более точной оценки канала. Для этого на принимающей станции демодулируют...
Тип: Изобретение
Номер охранного документа: 0002405254
Дата охранного документа: 27.11.2010
23.02.2019
№219.016.c757

Адаптация скорости передачи данных в ofdm-системе при наличии помех

Изобретение относится к области телекоммуникаций, более конкретно к способам повышения качества мобильной связи, и может найти применение в организации беспроводных каналов связи. Технический результат - повышение пропускной способности в условиях наличия помехи в полосе сигнала. Способ...
Тип: Изобретение
Номер охранного документа: 0002344546
Дата охранного документа: 20.01.2009
08.03.2019
№219.016.d4b2

Способ формирования дамп файла

Изобретение относится к компьютерным технологиям, в частности к системам и способам формирования дамп файла при возникновении сбоя в работе программы (аварийном завершении программы) в вычислительных системах с ограниченными ресурсами. Техническим результатом является расширение функциональных...
Тип: Изобретение
Номер охранного документа: 0002393530
Дата охранного документа: 27.06.2010
08.03.2019
№219.016.d4d1

Способ передачи-приема сигналов в системе радиосвязи с n каналами передачи и м каналами приема

Изобретение относится к области радиотехники, в частности к способу передачи и приема сигналов в системе радиосвязи с множеством каналов передачи и множеством каналов приема. Технический результат достигается за счет того, что для каждого интервала Та определяют количество J сигналов,...
Тип: Изобретение
Номер охранного документа: 0002381628
Дата охранного документа: 10.02.2010
+ добавить свой РИД