Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Код пользовательского режима и режима ядра используют различные подпрограммы для входа в отладчик.
User-Mode подпрограммы останова
Подпрограмма прерывания приводит к возникновению исключения в текущем процессе, чтобы вызывающий поток мог сигнализировать отладчику, связанному с вызывающим процессом.
Чтобы перейти к отладчику из программы пользовательского режима, используйте функцию DebugBreak. Его прототип выглядит следующим образом:
VOID DebugBreak(VOID);
Когда программа в пользовательском режиме вызывает DebugBreak, будут выполняться следующие возможные действия:
Если отладчик в пользовательском режиме подключен, программа перейдет в режим отладки. Это означает, что программа приостанавливается, а отладчик станет активным.
Если отладчик пользовательского режима не подключен, но отладка в режиме ядра была включена во время загрузки, весь компьютер переключится на отладчик ядра. Если отладчик ядра не подключен, компьютер заморозит и ожидает отладчика ядра.
Если отладчик пользовательского режима не подключен, а отладка в режиме ядра не включена, программа завершится с необработанным исключением, и посмертный (just-in-time) отладчик будет активирован. Дополнительные сведения см. в разделе Включение посмертной отладки.
Kernel-Mode Рутины прерывания
Когда программа в режиме ядра прерывается в отладчик, все операционные системы зависают до тех пор, пока отладчик ядра не сможет возобновить выполнение. Если отладчик ядра отсутствует, это рассматривается как проверка ошибок.
Подпрограмма DbgBreakPoint работает в коде в режиме ядра, но в противном случае аналогична подпрограмме пользовательского режима DebugBreak .
Подпрограмма DbgBreakPointWithStatus также вызывает разрыв, но он также отправляет 32-разрядный код состояния отладчику.
Подпрограммы KdBreakPoint и KdBreakPointWithStatus идентичны DbgBreakPoint и DbgBreakPointWithStatus соответственно при компиляции в проверенной среде сборки. При компиляции в среде бесплатной сборки они не влияют.
Kernel-Mode Условные операции прерывания
Для кода в режиме ядра доступны две подпрограммы условного останова. Эти подпрограммы проверяют логическое выражение. Если выражение равно false, выполнение останавливается, а отладчик становится активным.
Макрос ASSERT проверяет логическое выражение. Если выражение ложно, выполнение останавливается, а отладчик активируется. Неудачное выражение и его расположение в программе отображаются в отладчике.
Макрос ASSERTMSG идентичен ASSERT , за исключением того, что он позволяет отправлять дополнительное сообщение отладчику.
ASSERT и ASSERTMSG активны только при компиляции в проверенной среде сборки. При компиляции в среде бесплатной сборки они не влияют.