Как включить аварийные дампы в тестах Catch2 C в конвейере Azure DevOps CI/CD?

#c #testing #crash-dumps #catch2 #procdump

Вопрос:

Я разрабатываю программный продукт на C для Windows. Я написал тесты для него, используя фреймворк Catch2. Они автоматизированы в конвейере CI/CD в Azure Dev Ops (ADO). Что я хотел бы сделать, так это получить аварийный дамп (файл.dmp), автоматически созданный и сохраненный в этом конвейере ADO, когда в моем коде происходит сбой (например, необработанное исключение). Я не вижу в платформе Catch2 ничего, что позволяло бы собирать аварийный дамп. Я использую этот инструмент procdump.exe в другом месте, чтобы создать аварийный дамп, и мне интересно, есть ли способ запустить этот инструмент с помощью моих тестов Catch2, чтобы получить дамп при сбое. Любые советы о том, как это можно сделать, или с помощью других инструментов, будут полезны, спасибо! Даррен

Ответ №1:

В итоге я использовал procdump.exe чтобы запустить мой тестовый исполняемый файл Catch2. Например:

  procdump.exe -ma -e -x CrashDumpFolder MyCatch2Tests.exe  <test arguments>
 

Так как в моем случае MyCatch2Tests.exe запускает тесты в одном процессе, все вышесказанное должно сработать. Если в моих тестах произойдет сбой, в папке CrashDumpFolder будет создан полный аварийный дамп (файл*.dmp).