Томский государственный университет систем управления и радиоэлектроники
Опубликован: 01.11.2012 | Доступ: свободный | Студентов: 651 / 76 | Длительность: 06:01:00
Дополнительный материал 2:

Инструмент проверки корректности использования памяти и потоков Intel-Inspector-XE-2013-PB--082213

Орингинал текста Вы можете скачать здесь.

Основные возможности

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

"Мы целую неделю пытались понять причину аварийного завершения программы. Было установлено, что происходила порча памяти, но источник найти никак не удавалось. Потом мы запустили Intel Inspector XE, и сразу же выяснилось, что еще задолго до самого сбоя происходил выход за пределы массива. Если бы мы сделали это раньше, то сэкономили бы неделю!"

Микаель Ле Жерруэ (Mikael Le Guerroue), старший инженер по архитектуре кодеков, Envivio

Intel Inspector XE входит в состав следующих пакетов:

  • Intel® Parallel Studio XE
  • Intel® C++ Studio XE
  • Intel® Fortran Studio XE
  • Intel® Cluster Studio XE

Поддержка операционных систем:

  • Windows*
  • Linux*

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

Intel Inspector XE 2013 - это удобный инструмент поиска ошибок работы с памятью и потоками для Windows и Linux. Он повышает продуктивность поиска трудновоспроизводимых дефектов, сокращает затраты и ускоряет выпуск программных продуктов на рынок.

Находите ошибки использования памяти и потоков на ранних стадиях цикла разработки. Чем раньше обнаружена ошибка, тем меньше затраты на её исправление. Регулярное использование Intel Inspector XE в разработке и оценка качества программ упрощает поиск и диагностику ошибок на ранних этапах разработки приложения.

Находите ошибки, пропущенные при обычном регрессионном тестировании и статическом анализе. Intel Inspector XE находит скрытые дефекты в исполняемом коде, а также нестабильно проявляющиеся проблемы, причем даже в тех случаях, когда последовательность исполнения потоков, приводящая к ошибке, не реализовалась, а только была возможна.

Ошибки работы с памятью Ошибки использования потоков
  • Утечки памяти
  • Порча памяти и несанкционированный доступ
  • Несоответствия вызовов API выделения и освобождения памяти
  • Некорректное использование API работы с памятью
  • Гонки данных
    - в куче
    - на стеке
  • Взаимные блокировки (deadlocks)

Поддержка C, C++, C#, Fortran или любого сочетания этих языков. Например, если пользовательский интерфейс написан на C#, код высокого быстродействия - на C++, если в программе используется старый код на Fortran или библиотеки без исходников, то Intel Inspector XE поможет во всех этих случаях. Динамический анализ позволяет Intel Inspector XE проверять любой код, в том числе сторонние библиотеки, для которых исходный код недоступен.

Intel Inspector XE легко встраивается в процесс разработки. Для него не нужны специальные настройки компиляции и сборки, достаточно обычных настроек для сборки отладочной версии или релиза. Инспектируйте именно тот код, который вы отлаживаете или готовите к выпуску. Пользуйтесь графическим интерфейсом или автоматизируйте регрессионное тестирование с помощью командной строки. Графический интерфейс можно использовать отдельно в Windows и Linux, а можно интегрировать его в Microsoft Visual Studio.

Бонус: при покупке пакетов инструментов доступны дополнительные возможности проверки кода – статический анализатор и Pointer Checker (проверка корректности работы с указателями). Для работы с Intel Inspector XE обязательно использовать компилятор Intel. Но при покупке пакета инструментов компилятор Intel предоставляет дополнительные функции проверки кода. Статический анализ кода обеспечивает проверку безопасности программы, а Pointer Checker диагностирует некорректный доступ за пределами выделенных блоков памяти.

Intel Inspector XE показывает ошибки использования памяти и потоков в исходном коде. Стеки вызовов поясняют, какая последовательность функций привела к проблеме.

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

Основные возможности Intel Inspector XE


Выбор между быстрым и более подробным анализом

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

Остановка в отладчике упрощает диагностику ошибок

При использовании анализа с отладчиком, Intel Inspector XE прервёт исполнение программы в точке останова непосредственно перед возникновением ошибки. В этот момент остановки в отладчике вы можете проверить значения переменных, стеки вызовов и состояния всех параллельных потоков, приводящие к проблеме. Поддерживаются отладчики Microsoft Visual Studio, GDB и IDB. Для отладки конкретной проблемы выделите её в списке и выберите пункт Debug This Problem в выпадающем меню.

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

Если вы не можете понять, чем вызван рост динамической памяти в процессе выполнения приложения, провести диагностику поможет функция анализа роста памяти Heap Growth Analysis. Она позволяет получить отчет обо всей памяти, которая была выделена со времени последней контрольной точки и не была овобождена на момент вызова функции Show Leaks/Growth Now. Теперь Intel Inspector XE тажке позволяет получить мгновенный отчет об утечках памяти, происшедших с момента последней контрольной точки. Начало работы программы считается контрольной точкой по умолчанию, а функция Reset Leak/Growth Detection позволяет установить данный момент времени как новую контрольную точку для проверки памяти.

Функция паузы и возобновления ускоряет анализ

Ограничивайте анализируемую область приложения, вставляя вызовы API паузы и возобновления анализа в исходном коде. Включайте анализ только для тех участков кода, где предполагаются проблемы. Это снизит задержки анализа на длинных участках кода, которые вас не интересуют. При продуманном применении эта возможность полезна в тех случаях, когда от начала выполнения программы до появления ошибки проходит много времени.

Отключите вывод ложных ошибок и делитесь исключениями с командой

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

Командное взаимодействие

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

Управляйте списком ошибок с помощью фильтров

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

Находите труднодиагностируемые ошибки выхода за пределы выделенной памяти

Pointer Checker (проверка корректности работы с указателями) – механизм диагностики, основанный на возможностях компилятора. Он отлавливает обращения к памяти за пределами зарезервированной области и удобен для поиска висячих указатели, переполнений буфера и т. п. Диагностика проблемы ускоряется благодаря вызову отладчика при возникновении исключения.

**Bonus feature available when purchased as a part of one of the Intel® Parallel Studio XE family of tool suites.

Подробности

Меньше ложно-положительных срабатываний, более информативные сообщения об ошибках

Intel Inspector XE распознает семантику моделей параллельного программирования Intel® Threading Building Blocks (Intel® TBB), Intel® OpenMP и Intel® Cilk™ Plus, помогая экономить время анализа найденных ошибок.

  1. Инструмент характеризуется меньшим числом ложно-положительных срабатываний, чем конкурентные продукты.
  2. Ошибки описываются в понятных терминах исходного кода, нет сложных внутренних обозначений.

Динамический анализ: просто, надежно и точно

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

Одинаковый пользовательский интерфейс в Windows и Linux

Разрабатываете для Windows и Linux? Удобно, когда в разных операционных системах есть одни и те же инструменты анализа. Пользовательский интерфейс Intel Inspector XE одинаков для Windows и Linux. В Windows инструментарий можно использовать отдельно или интегрировать его в Microsoft Visual Studio.

Анализ ошибок использования памяти и многопоточности в приложениях MPI

С появлением многоядерных процессоров и технологии Hyperthreading в некоторых приложениях MPI появилась многопоточность. Intel Inspector XE позволяет искать ошибки использования памяти и потоков в таких приложениях. Многие ошибки обнаруживаются при первичном анализе на системе с общей памятью. Затем стоит провести дополнительный анализ программы на кластере, где полученные результаты сортируются по рангу.

Что нового

Особенность Преимущество
Точки останова для отладчика Точки останова упрощают диагностику трудных ошибок, вызывая отладчик непосредственно перед возникновением ошибки. Для диагностики проблемы можно изучать значения переменных и состояния всех потоков программы. Поддерживаются отладчики Visual Studio, GDB и IDB.
Анализ роста динамической памяти Если вы не можете понять, почему при работе приложения растет объем зарезервированной памяти, функция анализа роста памяти в куче поможет выяснить причину. Она выдает перечень выделений памяти, которые не были освобождены на интервале работы программы. Интересующий интервал выбирается с помощью кнопок графического пользовательского интерфейса или включением в код программы специального API.
Отчет об утечках памяти – в любое время по требованию Мгновенно получайте отчеты об утечках памяти в любой точке выполнения программы. Указывайте контрольную точку и просматривайте утечки памяти только с момента ее выполнения. Это позволит сосредоточиться только на утечках за определенный промежуток времени или в определенной секции кода. Отчеты доступны через графический пользовательский интерфейс и вызовы API.
Ускоряйте анализ за счет ограничения анализируемых областей программы С помощью API можно активизировать анализ только в процессе выполнения предположительно проблемного участка кода. При продуманном использовании данная возможность очень помогает в ситуациях, когда от начала работы программы до появления ошибки проходит много времени.
Ограничивайте диапазон анализа Устраняйте ложные ошибки и ускоряйте анализ, используя API для маркировки участков памяти, которые не нужно анализировать (например, содержащие синхронизационные структуры данных).
Точный контроль исключений Создавайте точные правила исключения ложных ошибок, выбирая один или несколько вызовов в стеке ошибки. Делитесь исключениями с коллегами.
Поддержка исключений, настроенных для других инструментов Импортируйте списки исключений из других популярных отладчиков ошибок памяти, например Purify и Valgrind. Переходите на Intel Inspector XE без затрат времени на повторное создание списков исключений. Теперь списки доступны в свободно редактируемом текстовом формате.
Улучшенные средства командного взаимодействия Информацию о состоянии ошибок ("подтверждена", "не является проблемой", "исправлена", "не исправлена" и т. д.), изменяемую несколькими участниками команды, можно объединять и делиться ею.
Анализируйте программы для сопроцессора Intel Xeon Phi С помощью Intel Inspector XE можно анализировать приложения для сопроцессора Intel Xeon Phi. При этом сам инструмент анализа работает на центральном процессоре. Во время анализа приложения, исполняемого на многоядерном процессоре, Intel Inspector XE выявляет ошибки использования памяти и потоков, которые произойдут при выполнении на сопроцессоре Intel Xeon Phi.
Анализ приложений MPI Находите ошибки использования памяти в приложениях MPI. Обнаруживайте ошибки использования памяти и потоков в гибридных приложениях на основе MPI и OpenMP. Intel Inspector XE легко устанавливается на кластере и обеспечивает просмотр результатов анализа с сортировкой по рангу.
OpenMP 4.0 Intel Inspector XE поддерживает семантику OpenMP и благодаря этому может выдавать сообщения об ошибках в терминах из исходного кода, а не с использованием непонятных внутренних обозначений этой библиотеки параллельного программирования. Кроме того, инструментарий выдает меньше ложных сообщений об ошибках.

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

Варианты приобретения: пакеты для одного языка

Several suites are available combining the tools to build, verify and tune your application. The product covered in this product brief is highlighted in blue. Named-user or multi-user licenses along with volume, academic, and student discounts are available.

Технические характеристики

Коротко о характеристиках
Поддержка процессоров При анализе приложений, компилируемых в инструкции Intel, поддерживаются процессоры Intel и совместимые.
Операционные системы Windows и Linux
Инструменты и среды разработки Intel Inspector XE совместим с компиляторами от разработчиков, придерживающихся платформенных стандартов (в том числе Microsoft, GCC и Intel). Возможна интеграция с Microsoft Visual Studio 2008, 2010 и 2012. Самая свежая информация доступна по ссылке http://www.intel.com/software/products/systemrequirements for the latest details.
Языки программирования C, C++, Fortran, C# (только анализ потоков)
Системные требования Подробные системные требования доступны по ссылке http://www.intel.com/software/products/systemrequirements for details.
Поддержка Пользователи получают обновления продуктов и доступ к онлайн-форумам технической поддержки Intel. Кроме того, в стоимость включен доступ к службе Intel Premier Support сроком на год, предоставляющий возможность получения веб-консультаций от инженеров Intel.
Сообщество Присоединяйтесь к онлайн-форумам технической поддержки Intel для просмотра, обучения и обмена идеями. http://software.intel.com/en-us/forums


Чтобы узнать больше о Intel Parallel Studio XE,

Скачайте бесплатную 30-дневную пробную версию
  • путем перехода по ссылке: http://intel.ly/sw-tools-eval
  • или после щелчка по ссылке 'Memory and Thread Debuggers'
ведомление об оптимизации Notice revision #20110804
Оптимизации, не рассчитанные исключительно на микропроцессоры Intel, на процессорах других производителей могут быть менее эффективными. В частности, это касается оптимизаций наборов команд SSE2, SSE3, SSSE3, а также других. Intel не гарантирует доступность, функциональность и эффективность любой оптимизации на микропроцессорах, выпущенных другими производителями. Оптимизации перечисленных в документе продуктов, зависящие от микропроцессоров, предназначены для микропроцессоров Intel. Некоторые оптимизации, не характерные для микроархитектуры Intel, резервируются только для микропроцессоров Intel. Дополнительную информацию о конкретных наборах инструкций, к которым относится данное уведомление, можно получить из соответствующих руководств пользователя и справочников.