У C-SPY есть код ошибки возврата?

Я использую cspybat IAR EWARM для запуска некоторых модульных тестов для моего встроенного кода с использованием Unity. Я хотел бы, чтобы мой сервер сборки мог легко определить, пройдены ли модульные тесты или нет. Есть ли способ для CSPY вернуть ненулевой код ошибки, если мои модульные тесты не пройдены? Я попытался изменить возвращаемое значение в main() без изменений. Есть ли функция, которую я могу вызвать, чтобы вызвать ошибку?

Мой командный файл cspybat выглядит так:

"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.4\common\bin\cspybat" -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.general.xcl" --backend -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.driver.xcl" 

1 ответ

Решение

К сожалению нет.

Я решил это, заменив "выход" на функцию, которая печатает определенный шаблон, плюс код выхода. Затем я завернул звонок cspybat в сценарий, который 1) обрезает вывод дополнительного вывода и 2) завершает работу с нужным кодом выхода.

Сейчас конец 2020 года, а механизма для этого пока нет.

Мы решили это, включив макро файл с содержимым:

execUserExit()
{
__message "program exited with __exit_value = ", __exit_value:%d ;
}

И наличие собственной переменной выхода в коде:

extern "C" int __exit_value=0xff;

Что мы установили до звонка exit() (хотя вы могли бы просто написать свою собственную версию exit())

Это заставляет отладчик всегда печатать ЧТО-ТО, даже если программа дает сбой при запуске.

Затем парсим с помощью обертки python:

pattern =  "__exit_value =\s([\-|0-9|a-f|A-F|x]*)"
retvalue = int(re.findall(pattern,process.stdout)[0])
Другие вопросы по тегам