Ищете веб-инструмент для анализа дампов памяти/дампов сбоев.

Вопрос или проблема

Наша команда нуждается в анализе дампов памяти от тестировщиков (или иногда от клиентов), которые производят библиотеки и приложения на C++. Как на Windows, так и на Linux. Конечно, мы можем использовать gdb для анализа, но дело в упрощении и командной работе. Знаете ли вы какие-либо веб-инструменты или плагины от Atlassian, Jetbrains или других, которые могут интегрироваться с Jenkins или BitBucket, например, которые упрощают (просмотр трассировки стека и списка локальных переменных и т. д.) анализ дампов памяти C++?

Так как вы уже знаете gdb, почему бы не автоматизировать это?

Кажется, все сейчас знают Python, так что посмотрите на эти (или выберите свой собственный способ автоматизации):

Есть https://dynatrace.github.io/superdump/ :

SuperDump – это сервис для автоматизированного анализа дампов памяти. У него есть веб-интерфейс, а также REST-интерфейс для загрузки дампов памяти Windows или дампов ядра Linux.

Я, однако, не пробовал этот инструмент. Что мне не нравится, так это то, что у него так много зависимостей для сборки. Также похоже, что SuperDumper не может мониторить систему на наличие дампов памяти, и пользователям нужно их загружать (мне нужен инструмент, который не только показывает детали дампов памяти, но и “управляет их жизненным циклом” – может быть, с состояниями, такими как “новый”, “принятый к рассмотрению”, “дубликат”, “открыт тикет в Jira”?).

Mozilla поддерживает свой собственный инструмент для анализа и управления сбоями: https://github.com/mozilla-services/socorro :

Socorro – это ориентированная на Mozilla система сбора и анализа отчетов о сбоях с использованием библиотек Breakpad.

Socorro кажется довольно сложным и запутанным, судя по диаграмме на https://socorro.readthedocs.io/en/latest/overview.html.

Я, однако, не пробовал этот инструмент. Mozilla неоднократно предупреждает: “Это очень ориентированный на Mozilla продукт. В настоящее время у нас нет возможности поддерживать не-Mozilla использования.”

Так что это может быть интересным источником вдохновения или отправной точкой, но, к сожалению, это не полное решение.

Ответ или решение

Вопрос анализа дампов памяти и провалов в приложениях на C++ важен для эффективной работы команды разработчиков. Вам необходимо оптимизировать процесс анализа предоставленных дампов, чтобы улучшить совместную работу и эффективность. В этом ответе я представлю несколько веб-инструментов и подходов, которые могут быть полезны вашей команде, учитывая различные требования и технологии.

1. Инструменты для автоматизации анализа дампов

a. SuperDump

SuperDump — это современный инструмент для автоматического анализа дампов. Он предоставляет веб-интерфейс и REST-API для загрузки дампов как с Windows, так и с Linux. Однако следует обратить внимание на его зависимость от множества библиотек, что может усложнить процесс установки. Более того, вам придется вручную загружать дампы, поскольку SuperDump не может отслеживать их в реальном времени.

b. Socorro

Socorro — это инструмент, разработанный Mozilla, который позволяет управлять и анализировать отчеты о сбоях с использованием библиотек Breakpad. Несмотря на свои возможности, Socorro довольно сложен в использовании и не предназначен для сторонних проектов, так как Mozilla сообщает, что поддержка не предназначена для не-Mozilla проектов.

2. Интеграция с CI/CD инструментами

Наличие автоматизированного решения, которое можно интегрировать с такими инструментами, как Jenkins или BitBucket, значительно упростит работу вашей команды. Рассмотрите использование следующего подхода:

a. Автоматизация с помощью Python и GDB

Если ваша команда уже имеет опыт работы с gdb, стоит рассмотреть его автоматизацию с помощью Python. Существует ряд библиотек, которые позволяют взаимодействовать с GDB через Python, например:

  • Pygdbmi для парсинга вывода GDB в структурированные данные.
  • Python API для GDB может помочь в расширении функциональности GDB.

Скрипты, написанные на Python, могут быть интегрированы с CI/CD, что позволит автоматически обрабатывать дампы, создавая отчеты и помечая определенные состояния (например, "новый", "триаж", "дубликат"), что облегчит управление жизненным циклом дампов.

3. Подходы к улучшению команды

a. Документация и обучение

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

  • Вебинары по работе с инструментами.
  • Документация для внутреннего использования.

b. Взаимодействие с сообществом

Наблюдение за сообществами, такими как Stack Overflow или GitHub, может помочь вашей команде находить решения для специфических проблем, связанных с анализом дампов.

Заключение

Анализ дампов является сложной задачей, требующей эффективного инструментария и командной работы. Предложенные инструменты, такие как SuperDump и Socorro, наряду с автоматизацией gdb через Python, могут предложить значительные преимущества для вашей команды. Убедитесь, что вы выбираете инструмент, который соответствует вашим конкретным требованиям, и не забывайте об обучении команды для максимизации эффективности.

Оцените материал
Добавить комментарий

Капча загружается...