Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleВозврат из загружаемого кода

Выход из приложения можно осуществлять следующим образом:

  • Возврат из main при помощи return. Код возврата будет помещен в параметр dwRetCode функции GrdCodeRun()
  • Вызов функции GcaExit(). Ей также передается код возврата

Кроме того, принудительное завершение приложения происходит в следующих случаях:

  • Наступление таймаута времени выполнения загружаемого кода (3 секунды)
  • Попытка выполнения приложением недопустимого действия (обращение к недопустимым адресам памяти и т.д.)

В примерах в качестве кода возврата с ошибкой используется значение -1. Для упрощения отладки можно возвращать значения макроса _LINE_ или пользоваться вызовом GcaExit(0, _ _LINE_). Этот способ поможет определить строку, на которой произошел выход из приложения. Оставлять в конечных версиях возвраты в данном виде нежелательно, так как это может дать дополнительную информацию для злоумышленника.

Для отладки можно, к примеру, использовать следующий макрос:

#define ASSERT(cond){if(cond)GcaExit(0,_LINE_);}

ASSERT(x != 0); // Если x!=0, осуществит возврат из программы с указанием номера строки, в которой вставлен ASSERT.

...