Upload
sqalab
View
351
Download
2
Embed Size (px)
DESCRIPTION
Презентация Татьяны Зинченко на SQA Days-16 14-15 ноября 2014, Санкт-Петербург, Россия www.sqadays.com
Citation preview
Контроль качества и сопровождение в
реальном времениАнтон Наумович
DPI Solutions / IASO Backup
Немного о себе
Антон НаумовичБолее 10 лет опыта в разработке
● C++ тимлид и архитектор в IASO Backup ● Консультант в DPI Solutions● В прошлом – разработчик в Microsoft, команда
Hyper-V (Windows Server 2008 R2/2012)
Специализируюсь в архитектуре, производительности, отладке, техническом troubleshooting-е
О чем поговорим?
1. О качестве приложений с технической, а не функциональной точки зрения
2. О построении автоматической системы отслеживания “технического” качества
3. О максимально возможном дистанцировании человека от построенной системы
В контексте нативных и .Net приложений под Windows
Что будем отслеживать?
Отклонения● падения● подвисания● потребление памяти● потребление процессора● и прочее
Отчего возникают отклонения?
1. Ошибки разработчиков (чаще всего!)2. Нюансы сторонних библиотек3. Разнообразие окружения (и софта, и
железа)
Как разобраться в причине?
Дампы памяти!
1. Дамп – файл-слепок памяти процесса, который можно снять в любой момент:● при падении процесса● с зависшего процесса● с работающего процесса
2. Беглого анализа обычно достаточно чтобы понять причину проблемы
3. Сам факт наличия дампа – уже сигнал “внимание, что-то произошло”
Сбор дампов
Нужен сторонний процесс-контроллер для независимости наблюдений
Также умеют снимать:- Task Manager- Process Explorer иprocdump (Sysinternals)
Что умеет отслеживать procdump?
Много чего:● Падения (-t -e)● Потребление процессора (-c)● Потребление памяти (-m)● Зависшие окна (-h)● Выход за пределы любых performance counters –
очень мощная вещь (-p)
Что еще умеет procdump?
● Ожидать старта процесса (-w)● Писать дампы сериями (-n)● Работать с таймаутами (-s)● Делать полные дампы с минимальным
вмешательством в процесс (-r)● Конфигурировать имена и расположение дампов
procdump: пример
Как извлечь информацию?
Анализ дампа – то же самое, что и отладка,только в статике
Можно и автоматически:
cdb.exe -y C:\lab -i C:\lab -z C:\lab\SuperApp.dmp -c "~*k;q" > C:\analysis.txt
Что в результате анализа?
Обычно достаточно стеков потоков чтобы найти причину проблемы
008afcf0 MSVCP120!std::_Xout_of_range+0x36008fc86b SuperApp!WorkerProcessor::GetNextChunk+0x1e10061d914 SuperApp!WorkerProcessor::CalculateAverage+0x2020062875c SuperApp!WorkerModule::ProcessQueueEvent+0xdf0012877a SuperApp!WorkerModule::TakeSingleItem+0x373004dc89a SuperApp!WorkerModule::Run+0x6700bdc100 SuperApp!main+0x1955
Теперь свяжем все вместе
Существующие похожие решения
Windows Error Reportinghttp://msdn.microsoft.com/en-us/library/windows/desktop/bb513641(v=vs.85).aspx
Mozilla Crash Reporterhttps://support.mozilla.org/en-US/kb/mozillacrashreporter
Символ-сервер
- Используется для хранения и быстрого доступа к отладочной информации
- На символ-сервер выкладываются все отладочные файлы предназначенные для анализа
- Значительно ускоряет отладку – не нужно искать файлы вручную
Синие экраны смерти
При “падении” Windows пишется дамп системы в файл C:\Windows\Memory.dmp
Анализ тривиален:1. Открываем дамп-файл в отладчике WinDbg или cdb2. Указываем адрес Microsoft символ-сервера -
http://msdl.microsoft.com/download/symbols3. Выполняем одну команду “analyze -v”
Инструментарий
• Набор отладчиков Debugging Tools for Windowshttp://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx• Семейство утилит Sysinternalshttp://technet.microsoft.com/en-us/sysinternals/bb545021.aspx• Библиотека Google Breakpadhttps://code.google.com/p/google-breakpad/• Windows API: семейство Debug Help http://msdn.microsoft.com/en-us/library/windows/desktop/ms679309(v=vs.85).aspx• Microsoft Symbols Serverhttp://en.wikipedia.org/wiki/Microsoft_Symbol_Server
1. Ускоряем нахождение и устранение дефектов2. Максимально автоматизируем и исключаем
человека из цепочки3. Даем возможность мгновенно среагировать
на критическую проблему4. Отслеживаем показатели качества от версии
к версии5. Повышаем надежность программы
Какая выгода?
Антон Наумович[email protected]
DPI Solutionswww.dpi.solutions
Belarus QA Automation Communitywww.comaqa.by
☺
Спасибо! Вопросы?