Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Код пользовательского режима и режима ядра используют различные подпрограммы для входа в отладчик.
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 активны только при компиляции в проверенной среде сборки. При компиляции в среде бесплатной сборки они не влияют.