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


         

Для того чтобы инициализировать DeadlockDetection


Для того чтобы инициализировать DeadlockDetection самостоятельно, надо лишь вызвать в подходящий момент функцию openDeadiockDetection, которая принимает единственный параметр — режимы начальных отчетов (initial reporting options). Все DDOPT_*-флажки перечислены в табл. 12.2. Чтобы получить возможность записывать (регистрировать) всю ключевую информацию об объектах синхронизации, функцию OpenDeadiockDetection необходимо вызвать перед тем, как приложение начнет создание потоков.

Таблица 12.2. Режимы отчетов DeadlockDetection

Флажок

Пределы регистрации

DDOPT_THREADS

Функции, относящиеся к потокам

DDOPT CRITSEC

Функции критической секции

DDOPT_MUTEX

Функции мьютекса

DDOPT SEMAPHORE

Функции семафора

DDOPT_EVENT

Функции событий

DDOPT ALL

Все подключаемые функции

В любой точке программы можно изменять режимы отчетов, вызывая функцию SetDeadiockDetectionOptions. Эта функция принимает тот же набор флажков (объединенных операцией OR), что и функция OpenDeadiockDetection. Чтобы получить текущий режим отчетов, нужно вызвать функцию GetDeadlockDetectionOptions. Во время выполнения программы можно изменять текущий режим сколько угодно раз. Если нужно приостановить или возобновить регистрацию, вызывайте функцию ResumeDeadlockDetection ИЛИ SuspendDeadlockDetection.

Наряду с исходным кодом DeadlockDetection, сопровождающий компакт-диск содержит и DLL-файл расширения DeadDetExt (TEXTFILEDDEXT.DLL). Это относительно простое расширение записывает всю информацию в текстовый файл. Когда DeadlockDetection выполняется с TEXTFILEDDEXT.DLL, расширение создает текстовый файл в том же каталоге, где находится выполняемая программа. Текстовый файл использует имя выполняемого файла с расширением .DD. Например, если выполняется SIMPTEST.EXE, то в результате будет создан файл SIMPTEST.DD. Листинг 12-1 показывает пример вывода из TEXTFILEDDEXT.DLL.

 Листинг 12-1. Вывод DeadlockDetection с использованием TEXTFILEDDEXT.DLL 


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