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


MinDBG: простой отладчик для Win32 - часть 5


При следующей загрузке DLL это событие будет сгенерировано снова.

Структура DEBUG_EVENTсодержит  структуру LOAD_DLL_DEBUG_INFO. Эта структура включает дескриптор недавно загруженной DLL, базовый адрес DLL, и другую информацию, которая описывает DLL.

Как правило, при получении этого события отладчик загружает таблицу символов, связанную с DLL.

  •  OUTPUT_DEBUG_STRING_EVENT

Данное событие генерируется, когда отлаживаемый процесс использует функцию OutputDebugString.

Структура DEBUG_EVENT содержит структуру OUTPUT_DEBUG_STRING_INFO. Эта структура указывает адрес, длину и формат строки отладки.

  •  UNLOAD_DLL_DEBUG_EVENT

Это событие генерируется всякий раз, когда отлаживаемый процесс разгружает DLL, используя функцию FreeLibrary. Это отладочное событие происходит только тогда, когда DLL последний раз разгружается из адресного пространства процесса (т. е. когда счетчик использования DLL становится равным 0).

Структура DEBUG_EVENT содержит структуру UNLOAD_DLL_DEBUG_INFO. Эта структура указывает базовый адрес DLL в адресном пространстве процесса, который разгружает DLL.

Как правило, при получении этого отладочного события отладчик разгружает таблицу символов, связанную с DLL.

Когда происходит выход из процесса, ядро автоматически разгружает все DLL процесса, но не генерирует отладочное событие UNLOAD_DLL_DEBUG _EVENT. 

  •  RIP__INFO

Это событие генерируется только контролируемой сборкой Windows 98 и используется, чтобы сообщить об условиях ошибок, таких, например, как закрытие неправильных дескрипторов.

Когда отладчик обрабатывает события отладки, возвращаемые функцией :.TaitForDebugEvent, он имеет полный контроль над подчиненным отладчиком, потому что операционная система останавливает все потоки в этом отладчике, и не будет планировать их до тех пор, пока не будет вызвана функция continueoebugEvent. Если отладчик должен читать или писать в адресном пространстве подчиненного отладчика, он может использовать функции ReadProcessMemory и WriteProcessMemory.


Начало  Назад  Вперед



Книжный магазин