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



         

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


VERIFY ( CloseHandle ( hStartAck));

return ( INVALID_HANDLE_VALUE); 

}

// Ждать, пока поток отладки не стабилизируется, и запустить

::WaitForSingleObject ( hStartAck, INFINITE);

// Освободить дескриптор уведомления.

VERIFY ( CloseHandle ( hStartAck));

// Проверить, выполняется ли еще поток отладки. Если нет,

// отладка, вероятно, не может стартовать.

DWORD dwExitCode = ~STILL_ACTIVE;

if ( FALSE == GetExitCodeThread ( hDbgThread, SdwExitCode))

{

ASSERT ( !"GetExitCodeThread failed!");

return ( INVALID_HANDLE_VALUE); 

}

ASSERT ( STILL_ACTIVE = dwExitCode);

 if ( STILL_ACTIVE != dwExitCode)

{

TRACE ( "StartDebugging : GetExitCodeThread failedXn");

return ( INVALID_HANDLE_VALUE); 

}

// Создать события синхронизации, чтобы главный поток мог 

// сообщать циклу отладки, что делать.

 BOOL bCreateDbgSyncEvts =

CreateDebugSyncEvents ( IpDebugSyncEvents, *lpPID);

 ASSERT ( TRUE = bCreateDbgSyncEvts);

 if ( FALSE = bCreateDbgSyncEvts)

{

// Это — серьезная проблема. Есть выполняющийся поток отладки,

//но нет возможности создавать события синхронизации, которые

// нужны потоку пользовательского интерфейса для управления

// потоком отладки. Здесь можно только завершить поток отладки и

// выполнить возврат. Больше сделать ничего нельзя.

TRACE ( "StartDebugging : CreateDebugSyncEvents failedW) ;

VERIFY ( TerminateThread ( hDbgThread, (DWORD)-1));

return ( INVALID_HANDLE_VALUE);

}

return ( hDbgThread); 

}

И, наконец, операторы утверждений используются в том случае, когда возникает необходимость проверить некоторое предположение. Например, если в спецификациях функции говорится о том, что она требует 3 Мбайт дискового пространства, то нужно проверить это предположение с помощью оператора утверждения. Другой пример: если функция получает (через аргумент вызова) массив указателей на определенную структуру данных, то необходимо проверить данные этой структуры и подтвердить правильность каждого индивидуального элемента.




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