Отладка приложений



         

Описание Функции isArray Проверяет - часть 2


.

.

.

}

Что проверяют операторы утверждений

Теперь посмотрим, что необходимо проверять с помощью операторов утверждений. Судя по предыдущим примерам, прежде всего нужно проверять те данные, которые поступают в функцию через аргументы ее вызовов из других программ. Существует опасность, что таким образом в функцию будут направляться некорректные данные (например, данные некорректных для этой функции типов или значений). Выполняя проверки соответствующих параметров, операторы утверждений значительно облегчают процесс отладки и реализуют идею профилактического программирования.

Ниже показан исходный код одной из ключевых функций (stopDebugging) простого отладчика, описанного в главе 4, в которой для контроля параметра использован макрооператор ASSERT. Обратите внимание, что в теле функции сначала выполняется оператор утверждения (ASSERT) и сразу за ним — обработка реальной ошибки. Напомним, что операторы утверждений лишь контролируют правильность параметров, да и то лишь на этапах отладки, и никоим образом не заменяют нормальной обработки ошибок.

BOOL DEBUGINTERFACE_DLLINTERFACE _stdcall

StopDebugging ( LPHANDLE IpDebugSyncEvents) 

{

ASSERT ( FALSE ==

IsBadWritePtr ( IpDebugSyncEvents,

sizeof ( HANDLE) * NUM_DEBUGEVENTS)); 

if ( TRUE == IsBadWritePtr ( IpDebugSyncEvents,

sizeof ( HANDLE) * NUM_DEBUGEVENTS))

 {

SetLastError ( ERROR_INVALID_PARAMETER);

 return ( FALSE); 

}

// Сигнал потоку отладки с именем события его закрытия. 

VERIFY ( SetEvent ( IpDebugSyncEvents[ CLOSEDEBUGGER ]));

return ( TRUE);

 }

Параметры внутренних private-функций программного модуля не всегда нуждаются в контроле с помощью утверждений. Он необходим только в том случае, если речь идет о внешнем вызове внутренней функции. Более того, если параметр, используемый внешним вызовом, однажды уже прошел через проверку оператором утверждения (на этапе отладки, например), то нет необходимости повторять такие проверки в отлаженном (рабочем) варианте программы.


Содержание  Назад  Вперед