Динамический анализ кода

Динамический анализ кода

Динамический анализ кода (англ. Dynamic program analysis) — анализ программного обеспечения, выполняемый при помощи выполнения программ на реальном или виртуальном процессоре (анализ, выполняемый без запуска программ называется статический анализ кода). Утилиты динамического анализа могут требовать загрузки специальных библиотек, перекомпиляцию программного кода. Некорые утилиты могут инструментировать исполняемый код в процессе исполнения или перед ним. Для большей эффективности динамического анализа требуется подача тестируемой программе достаточного количества входных данных, чтобы получить более полное покрытие кода. Также требуется позаботиться о минимизации воздействия инструментирования на исполнение тестируемой программы (включая временные характеристики).

Примеры утилит

  • Valgrind (en), выполняет программу на виртуальном процессоре, может обнаруживать ошибки памяти (например, связанные с неверным использованием функций malloc и free), ситуации гонки потоков (race conditions) в многопоточных программах
  • Dmalloc, библиотека для проверки выделения и освобождения памяти, а также утечек памяти, повторного освобождения и т. п. Программа должна быть перекомпилирована, кроме того все во файлы необходимо подключить заголовочный файл языка Си dmalloc.h для получения более точных отчетов.
  • jTracert, Java агент (загружаемый с помощью аргумента -javaagent:), который инструментирует код существующих приложений, работающих в виртуальной машине JVM, и автоматически строит диаграммы последовательности (sequence diagrams).
  • Daikon — реализация динамического детектора инвариантов. Проводится поиск значений, вычисляемых программой и поиск свойств, которые были верны при запуске, и, наиболее вероятно, будут верны при всех запусках.
  • DynInst — библиотека, модифицирующая код во время исполнения. Полезна при разработке программ динамического анализа, помогает добавлять в тестируемое ПО отладочные точки (probes). В основном, Dyninst, не требует перекомпиляции программ, однако, non-stripped executables и исполняемые файлы с отладочной информацией проще поддаются инструментированию.
  • Holodeck от компании Security innovation is a fault simulation tool for dynamic analysis and fragility/security testing of Windows programs.
  • IBM Rational Purify: в основном детектирует ошибки при работе с памятью (выход за переделы массивов, утечки памяти).
  • BoundsChecker: возможности, схожие с IBM Purify.
  • VB Watch добавляет код динамического анализа в программы на языке Visual Basic для мониторинга их производительности, стека вызовов, трассы исполнения, instantiated objects, variables и покрытия кода.
  • Insure++ — анализатор памяти и детектор ошибок. Компонент Inuse позволяет увидеть графически историю выделения памяти, анализировать использование кучи, искать утечки памяти и т. п.
  • Intel Thread Checker — анализатор ошибок в многопоточных приложениях. Обнаруживает ошибки конкурентного доступа к данным и ситуации взаимоблокировок. Работает с приложениями для ОС Windows и Linux.
  • CHESS — инструмент для тестирования многопоточных .Net (управляемых) и Win32, 64 программ

Большая часть программ анализа производительности (англ.) использует методы динамического анализа программ.

Исторические примеры

  • IBM OLIVER (CICS interactive test/debug): CICS application error detection including storage violations using an instruction Set Simulator to detect most CICS errors interactively
  • SIMON (Batch Interactive test/debug) interactive batch program analyzer and test/debug using an instruction Set Simulator
  • SIMMON: IBM internal instruction Set Simulator used for testing operating system components, utilities and I/O processors

См. также



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Динамический анализ кода" в других словарях:

  • Статический анализ кода — (англ. static code analysis)  анализ программного обеспечения, производимый без реального выполнения исследуемых программ (анализ, производимый с выполнением программ, называется динамический анализ кода). В большинстве случаев анализ… …   Википедия

  • CHESS (динамический анализатор) — У этого термина существуют и другие значения, см. Chess. CHESS программа проверки моделей для поиска ошибок/гейзенбагов в многопоточных программах с помощью систематического перебора всевозможных переключений потоков. Инструмент находит такие… …   Википедия

  • Формальные методы — Пример формальной спецификации с использованием Z нотации В информатике и инженерии программного обеспечения формальными методами называется группа техник, основанных на математическом аппарате для …   Википедия

  • Утечка памяти — (англ. memory leak) процесс неконтролируемого уменьшения объёма свободной оперативной памяти (RAM) компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти, или с ошибками системных служб …   Википедия

  • Утечки памяти — Утечка памяти (англ. memory leak) процесс неконтролируемого уменьшения объёма свободной оперативной памяти (RAM) компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти, или с ошибками… …   Википедия

  • линейный — 92 линейный [нелинейный] элемент (электрической цепи) Элемент электрической цепи, у которого электрические напряжения и электрические токи или(и) электрические токи и магнитные потокосцепления, или(и) электрические заряды и электрические… …   Словарь-справочник терминов нормативно-технической документации

  • JavaScript — Не следует путать с Java. JavaScript Класс языка: мультипарадигменный …   Википедия

  • Переполнение буфера — У этого термина существуют и другие значения, см. Переполнение. Переполнение буфера (Buffer Overflow) явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера. Переполнение буфера обычно… …   Википедия

  • ГОСТ Р МЭК 60880-2010: Атомные электростанции. Системы контроля и управления, важные для безопасности. Программное обеспечение компьютерных систем, выполняющих функции категории А — Терминология ГОСТ Р МЭК 60880 2010: Атомные электростанции. Системы контроля и управления, важные для безопасности. Программное обеспечение компьютерных систем, выполняющих функции категории А оригинал документа: 3.25 N версионное программное… …   Словарь-справочник терминов нормативно-технической документации

  • показатель — 3.7 показатель (indicator): Мера измерения, дающая качественную или количественную оценку определенных атрибутов, выведенную на основе аналитической модели, разработанной для определенных информационных потребностей. Источник …   Словарь-справочник терминов нормативно-технической документации


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»