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



         

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


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

При выборе параметров для проверок с помощью утверждений полезно придерживаться некоторой средней линии поведения и проверять не все, а лишь наиболее "опасные" для устойчивой работы модуля параметры внутренних вызовов. Правильный отбор таких параметров возможен лишь после приобретения достаточных навыков в разработке программ. Только накопив определенный опыт программирования, вы почувствуете, в каких точках программы можно столкнуться с проблемами, и сможете отобрать внутренние параметры для проверок с помощью утверждений.

Другими объектами ASSERT-контроля являются возвращаемые значения функций. ASSERT-оператор проверяет корректность возвращаемого значения непосредственно перед его возвратом в вызывающую программу. Некоторые разработчики предпочитают проверять с помощью операторов утверждений почти каждое возвращаемое значение. В листинге 3-1 приводится определение функции startDebugging (из отладчика, описанного в главе 4), использующее операторы утверждений для проверки корректности возвращаемых значений. Если в функции вычисляется некорректное значение, то оператор утверждения выводит на экран предупреждающее сообщение.

 Листинг 3-1. Примеры ASSERT-проверок возвращаемых значений ;

HANDLE DEBUGINTERFACE_DLLINTERFACE _stdcall

StartDebugging ( LPCTSTR szDebuggee , 

LPCTSTR szCmdLine , 

LPDWORD IpPID ,

 CDebugBaseUser * pUserClass ,

 LPHANDLE IpDebugSyncEvents ) 

{

// ASSERT-проверки параметров.

ASSERT ( FALSE == IsBadStringPtr ( szDebuggee, MAX__PATH)); 

ASSERT ( FALSE == IsBadStringPtr ( szCmdLine, MAX_PATH)); 

ASSERT ( FALSE == IsBadWritePtr ( IpPID, sizeof ( DWORD))); 

ASSERT ( FALSE == IsBadReadPtr ( pUserClass,




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