«Анализ и отладка программного обеспечения средствами QNX

advertisement
Семинар
«Российские информационные технологии
ответственного назначения»
«Анализ и отладка программного обеспечения
средствами QNX Momentics IDE»
Игорь Рондарев, «СВД Встраиваемые Cистемы»
QNX Momentics IDE
●
Платформа Eclipse
–
●
CDT (C Development Toolkit)
–
●
модульность и расширяемость
разрабатывается при непосредственном участии
специалистов QSS
QNX-ориентированные инструменты
–
информация о системе, создание загрузочных образов,
профилирование и т.д.
КОНФИГУРАЦИЯ СТЕНДА
Инструментальная
система
Целевая
система
TCP/IP
QNX® Momentics® IDE
qconn
ВСТРЕЧАЮЩИЕСЯ ПРОБЛЕМЫ
●
●
Изолированные
–
Некорректная работа с точки зрения решаемой задачи
(“2 + 2 = 5”; ошибки в алгоритмах)
–
Аварийное завершение работы
(например, SIGSEGV вследствие ошибки доступа к памяти)
Системные
–
●
Меняет своё поведение, когда попадает в окружение
других приложений (DEADLINE)
Смежные
–
Работает недостаточно эффективно
(причиной может быть как недостаточная эффективность алгоритма,
так и влияние других процессов, выполняющихся
в системе)
ИНСТРУМЕНТАРИЙ
●
Отладчик (Debugger)
●
Анализ памяти (Memory Analysis / Mudflap)
●
Прикладное профилирование (Application Profiling)
●
Анализ покрытия кода (Code Coverage)
●
Системное профилирование (System Profiling)
●
Инструменты общего назначения (Information)
ОТЛАДЧИК (DEBUGGER)
●
●
Пошаговая отладка приложения
–
с созданием нового процесса
–
с подключением к уже существующему процессу
Анализ дампа приложения (application core dump)
–
–
варианты использования
●
создание аварийного дампа при досрочном завершении (т.н. crash dump)
●
создание дампа работающего приложения
системный инструмент “dumper”
РАБОТА С ПАМЯТЬЮ: ТИПОВЫЕ ОШИБКИ
●
Запись в уже освобождённый участок памяти (strcpy, malloc,..)
–
●
Чтение из неинициализированной области памяти
–
●
char *p, c;
p = malloc(4);
c = p[0];
free(p);
“Висящие” указатели (“dangling pointers”)
–
●
char *p, a[] = "abc";
p = malloc(4);
········
free(p);
········
strcpy(p, a);
char *p; {char c = 'a'; p = &c} ; printf(“%c”, *p);
и т.д.
QNX Memory Analysis
●
●
●
Не требует пересборки приложения
Функционал обеспечивается библиотекой librcheck.so,
переопределяющей некоторые стандартные функции
Режимы работы
–
Анализ “на лету” с помощью QNX Momentics IDE
–
Запись результатов анализа во временный файл для последующей обработки
Mudflap
●
Дополняет возможности инструмента QNX Memory Analysis
●
Требует построения инструментированной версии приложения
●
Режимы работы
–
Анализ “на лету” с помощью QNX Momentics IDE
–
Запись результатов анализа во временный файл для последующей обработки
Code Coverage
●
Позволяет обнаружить наличие неиспользуемых участков кода
в программе (в частности, при написании тестов)
●
Использует метрики компилятора gcc (gcov)
●
Режимы работы
–
Анализ “на лету” с помощью QNX Momentics IDE
–
Запись результатов анализа во временный файл для последующей обработки
ПРОМЕЖУТОЧНЫЙ РЕЗУЛЬТАТ
Инструменты динамического анализа
(Memory Analysis, Mudflap и Code Coverage):
●
помогают исправлять труднообнаруживаемые ошибки
●
позволяют повышать эффективность кода
●
получать более компактные приложения
–
удаление неиспользуемых фрагментов кода (например, из библиотек)
ПРОФИЛИРОВАНИЕ ПРИЛОЖЕНИЙ (APPLICATION PROFILING)
●
●
●
Позволяет производить оценку временных характеристик
работы приложения
Несколько режимов сбора информации
–
Sampling
–
Sampling + Call Count
–
Function Instrumentation
Управление профилированием
–
Средствами QNX Momentics IDE
–
Командный интерфейс (сигналы, переменные окружения)
СИСТЕМНОЕ ПРОФИЛИРОВАНИЕ (SYSTEM PROFILING)
●
Даёт возможность наблюдать за процессами взаимодействия
компонентов системы (процессов и потоков) между собой
●
Позволяет сохранять данные для последующего анализа
●
Различные режимы использования
–
Интерактивный (QNX Momentics IDE + qconn)
–
Консольный (tracelogger)
–
Через программный интерфейс (TraceEvent() API)
ИНСТРУМЕНТЫ ОБЩЕГО НАЗНАЧЕНИЯ
●
System Information
●
Process Information
●
Malloc Information
●
Connection Information
Игорь Рондарев
инженер-программист
(812) 346-8956
support@kpda.ru
www.kpda.ru
www.nautsilus.ru
Download