Автореферат (Метод обнаружения ошибок при работе с памятью на статическом этапе отладки программного обеспечения), страница 3

PDF-файл Автореферат (Метод обнаружения ошибок при работе с памятью на статическом этапе отладки программного обеспечения), страница 3 Технические науки (24812): Диссертация - Аспирантура и докторантураАвтореферат (Метод обнаружения ошибок при работе с памятью на статическом этапе отладки программного обеспечения) - PDF, страница 3 (24812) - СтудИзба2019-03-12СтудИзба

Описание файла

Файл "Автореферат" внутри архива находится в папке "Метод обнаружения ошибок при работе с памятью на статическом этапе отладки программного обеспечения". PDF-файл из архива "Метод обнаружения ошибок при работе с памятью на статическом этапе отладки программного обеспечения", который расположен в категории "". Всё это находится в предмете "технические науки" из Аспирантура и докторантура, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. , а ещё этот архив представляет собой кандидатскую диссертацию, поэтому ещё представлен в разделе всех диссертаций на соискание учёной степени кандидата технических наук.

Просмотр PDF-файла онлайн

Текст 3 страницы из PDF

Например,распределение с помощью оператора new, с последующим освобождением спомощью функции free().Приведённая классификация ошибок при работе с памятью охватывает спектрошибок, наиболее часто возникающих у программистов при работе с оперативнойпамятью, способных критически сказаться на работоспособности систем реальноговремени.Разработанная методика обнаружения ОРП предполагает разделениемножества исследуемых проектов ПО на классы сложности: A – простой; B –11средний; C - сложный проекты (см. табл.

2). Отнесение проекта к одному из классовопределяется числом N стр строк исходного кода.КлассN стрТаблица 2. Классы ПОAB3Nстр ∈ ⎡⎣1,10 ⎤⎦Nстр ∈ (10 ,10 ⎤⎦36CNстр ∈ (106 , ∞ ⎤⎦При построении модели программы для проектов, принадлежащих кклассам A и B, применяется синтаксический анализ с использованием средствкомпиляции, которые позволяют получить доступ к промежуточномупредставлению данных.Для построения модели программы для проектов, принадлежащих к классу C,предлагается использовать упрощенный синтаксический анализатор.После построения модели необходимо вычислить возможные состоянияпрограммы в различных точках ее исполнения.Для проектов, принадлежащих к классу сложности A и B, используется методабстрактной интерпретации.Метод абстрактной интерпретации по принципу работы напоминаеттрадиционную интерпретацию программы.

Традиционный интерпретатор оперируетконкретными значениями переменных, хранящихся в памяти; состояние программыв конкретный момент ее выполнения с точки зрения такого интерпретаторапредставляет собой множество пар (obj, value), где obj- программный объект, а value– его значение. При абстрактной интерпретации состояние программыпредставляется множеством пар (obj, valueset), причем valueset – множествозначений программного объекта.Для проектов, принадлежащих к классу сложности C, применяется методупрощенного анализа потока управления.При использовании алгоритмов анализа значений состояние программыпредставляется в виде множества пар (ячейка памяти, множество допустимыхзначений). В ячейках памяти может располагаться как переменная примитивноготипа, так и элемент массива или поле структуры.Существует два основных вида значений ячеек памяти:•числовые значения, для которых используется интервальный анализ дляпроектов класса сложности A и B.Алгоритмы интервального анализа предназначены для определениявозможных значений переменных числового типа.

Операции над точнымизначениями выполняются в соответствии с правилами того языка, на которомнаписана программа. При анализе ветвлений интервальные значения могутразъединяться с последующим объединении при анализе фи-функций.•указатели, для которых используется анализ указателей.Алгоритмы анализа указателей предназначены для определения возможныхзначений переменных указательного типа и используются для проектов сложностивсех трех классов.12Алгоритмы анализа зависимостей применяются при анализе проектовкласса сложности A и B.Зависимость – определенная связь между значениями двух или несколькихячеек памяти.

При анализе фи-функций происходит пересечение имеющихся вразных ветвях зависимостей.При анализе циклов если количество итераций циклов неизвестно, тоиспользуются следующие способы решения подобной проблемы:1.Для проектов класса A несколько итераций цикла анализируютсяобычным образом, после чего делается попытка выделить «инвариант цикла» ивыполнить последнюю итерацию анализа в обобщенной форме. Инвариантом вданном случае называется утверждение или набор утверждений, справедливых налюбой итерации цикла.2.Для проектов класса B и C выполняется прерывание анализа цикла наитерации с заданным номером (для проекта класса С - 1). Состояние программы навыходе данной итерации переносится на выход цикла.При анализе рекурсивных вызовов для проектов класса A и B принебольшом уровне рекурсии значения формальных параметров необходимо хранитьотдельно для каждого вызова функции.

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

Блок программы множество последовательных конструкций, среди которых отсутствуютмежблоковые конструкции, которыми являются if , фи-функции, init , create , join ,lock , unlock , wait , post и state. Конструкции синхронизации взаимодействуют другс другом с помощью блокировки и освобождения объекта синхронизации спомощью отношений синхронизации.Предложенная методика позволяет обнаруживать ошибки работы с памятью впрограммном обеспечении на статическом этапе отладки за короткое время дляпроектов всех классов сложности. Наибольшую сложность при анализепредставляют проекты класса C – крупные проекты.Для выявления ОРП в сложных проектах ПО разработан метод обнаруженияОРП, который отличается от существующих введением механизма контролясостояний сегментов памяти после построения промежуточного представленияданных в режиме статической отладки.Структурная схема разработанного метода проиллюстрирована на рисунке 2.Метод выявления ошибок при работе с памятью состоит из трех стадий:построения промежуточного представления данных, контроля состояний сегментовдинамически выделенной памяти и генерации сообщений о выявленных ошибках.13На рисунке 3 изображен алгоритм обхода графа вызовов функций.Правила работы семантического анализатора (СА) – это правила выявленияОРП по модели состояний объектов памяти.Будем обозначать объект динамически выделенной памяти M i j , где i порядковый номер вызова функции работы с динамической памятью в функции всоответствии с таблицей сведений по функциям работы с памятью, j - порядковыйномер функции в таблице описаний функций.Рисунок 2.

Структурная схема метода выявления ошибок14mainРегистрация  вызова  функцииПереход  к  следующей  функции  в  графе  по  горизонталиПереход  к  следующей  функции  в  графе  по  вертикали  внизСодержит  нерекурсивные  вызовы?даИмеются  параллельные  ветви  справа?данетСемантический  анализ  (СА)нетСА  вызывающей  функции  (переход  вверх  по  графу)даОстались  необойденные    ветви?нетконецРисунок 3. Блок-схема алгоритма обхода графа вызовов функцийОпределим RS - множество допустимых состояний памяти:•«память, выделенная функцией malloc()»;•«память, выделенная оператором new()»;•«ресурс, выделенный функцией fopen()»;•«ресурс, выделенный функцией popen()»;•«память, освобожденная функцией free()»;•«память, освобожденная оператором delete»;•«ресурс, освобожденный функцией fclose()»;•«ресурс, освобожденный функцией pclose()»;•«пустое состояние (не соответствует ни одному из названных выше)».Определим RA - множество допустимых действий над объектом памяти:•выделение памяти функцией malloc() и производными;•выделение памяти оператором new;•выделение ресурса функцией fopen() и производными;•освобождение памяти функцией free();•освобождение памяти оператором delete;•освобождение ресурса функцией fclose() и производными;•выделение памяти функцией asprintf() и производными;•бездействие.Введем условные обозначения для элементов таблицы состояний памяти:15Ψ ( M i j ) - имя переменной, содержащей указатель на сегмент памяти;Ω( M i j ) - текущее состояние объекта памяти; Ω ∈ RS ;Ωк ( M i j ) - конечное состояние памяти; Ωк ∈ RS ;Ω0 ( M i j ) - первоначальное состояние памяти; Ω0 ∈ RS .Обозначим η - номер параметра в функции, которым является данный объектпамяти.

Данный параметр используется при межпроцедурном анализе и задаетсязначением «-1» для идентификации возвращаемого значения оператором return илипорядковым номером параметра в вызывающей функции.В таком случае множество имен указателей на динамически выделеннуюпамять, которые хранятся в таблице состояний памяти, будем обозначать RΨ .Введем условные обозначения для элементов таблицы сведений по функциямработы с памятью:Ψ 0 ( M i j ) - первоначальное имя переменной-указателя на динамическивыделенную память;Ψ k ( M i j ) - новое имя переменной-указателя на динамически выделеннуюпамять.Будем обозначать текущее действие ϕ над объектом памяти M i j - ϕ ( M i j ) .Данное действие соответствует некоторому типу работы с памятью: ϕ ( M i j ) ∈ RT .Модель состояний объектов памяти, строящаяся при внутрипроцедурноманализе каждой функции для объекта памяти, который является локальным дляданной функции, выглядит следующим образом:{ Ψ ( M i j ) = ∅ : [ Ψ ( M i j ) = Ψ 0 ( M i j ) ; Ω0 ( M i j ) = ϕ ( M i j ) ; Ω( M i j ) = Ω0 ( M i j ) ; Ωk ( M i j ) = Ω( M i j ) ]},{ Ψ ( M i j ) ≠ ∅ : [ Defect0 ( Ω( M i j ) , ϕ ( M i j ) ); Ω( M i j ) = ϕ ( M i j ) ; Ωk ( M i j ) = Ω( M i j ) ]}.(1)Defect0 - правила выявления ОРП.Запись Ψ ( M i j ) = ∅ : означает, что далее рассматривается математическоеописание состояния для нового объекта памяти.Модель состояний объектов памяти, строящаяся при межпроцедурноманализе, выглядит следующим образом:{ Ψ 0 ∈ RΨ ,η ≠ ∅ :[ Ψ ( M i j ) = Ψ k ( M i j ) ; Ω( M i j ) = ϕ ( M i j ) ]}(2)Для обозначения соответствия состояния памяти Ω одному из значениймножества состояний памяти будет использоваться следующая запись:Ω∈ RS [a − b] , которая обозначает, что данное состояние совпадает с одним изсостояний: Ra , Ra +1 ,..., Rb −1, Rb , где a < b .Аналогично для имен переменной, являющихся указателем на выделеннуюпамять.Правила выявления ОРП Defect0 , используемые при построении икорректировки таблицы состояний памяти, выглядит следующим образом:Обнаружение ошибки 1 вида ( Err1 ) «Повторное выделение ресурса без егопредварительного освобождения» выполняется с помощью следующего правила:16(3)Err1 : { Ω( M i j ) ∈ RS [1 − 4], Ψ ( M i j ) ∈ RA [1, 2,3, 7]}.Обнаружение ошибки 2 вида ( Err2 ) «Потеря последней ссылки на ресурс»выполняется с помощью следующего правила:(4)Err2 : { Ψ ( M i j ) ∈ RA [1, 2,3, 7], Ψ ( M i j ) = ∅ , N = ∅ }.Обнаружение ошибки 3 вида ( Err3 ) «Освобождение ресурса до его выделения»выполняется с помощью следующего правила:(5)Err3 : { Ω0 ( M i j ) ∈ RS [5 − 8] }.Обнаружение ошибки 4 вида ( Err4 ) «Повторное освобождение ресурса»выполняется с помощью следующего правила:(6)Err4 : { Ω( M i j ) ∈ RS [5 − 8] , Ψ ( M i j ) ∈ RA [4 − 6] }.Обнаружение ошибки 5 ( Err5 ) вида «Освобождение ресурса функцией, непредназначенной для освобождения этого типа ресурсов» выполняется с помощьюследующих правил:Err5 : { Ω( M i j ) ∈ RS [1] , Ψ ( M i j ) ∈ RA [5, 7] };Err5 : { Ω( M i j ) ∈ RS [2] , Ψ ( M i j ) ∈ RA [4, 6] };(7)Err5 : { Ω( M i j ) ∈ RS [3, 4] , Ψ ( M i j ) ∈ RA [4,5] }.Для окончательного выявления ОРП на этапе выявления ошибок помимоалгоритма Defect0 используется следующее правило:(8)Err2 : { Ωк ( M i j ) ∈ RS [1 − 4] },Разработанный метод статического выявления ошибок при работе с памятьюпозволяет обнаруживать ОРП за короткое время в крупных проектах.Также в данном разделе приводится оценка сложности разработанногоалгоритма, которая выражается формулой:(9)O(R+L)*N2,гдеR - глубина графа вызовов.L – размер функции в строках.N - количество определенных в проекте функций.В третьем разделе рассмотрены практические аспекты реализациирезультатов исследования.Memory-related Errors Detection and Isolation System (MEDIS) – программноинструментальное средство обнаружения и локализации ошибок, связанных сраспределением сегментов оперативной памяти принцип работы которого основанна разработанном методе выявления ошибок в ПО.Для оценки эффективности работы программно-инструментальных средств(ПИС) выявления ОРП предлагается следующий набор показателей качества (ПК),характеризующих работу:•состав ошибок (виды ОРП), выявляемых данным ПИС,•число выявленных (или, наоборот, число не выявленных) ошибок,•число выявленных ошибочно (ложных) ошибок,17•время работы (необходимое время для выполнения всехпредусмотренных операций).Для сравнения выбрано ПИС Cppcheck в связи с тем, что данное средствошироко распространено и имеет открытый исходный код.Оценка ПК ПИС MEDIS и Сppcheck проводилась по результатам их работы напроектах ПО всех трёх классов.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее