- Ошибка: отладка невозможна, поскольку в системе включен отладчик ядра Error: Debugging Isn’t Possible Because a Kernel Debugger is Enabled on the System
- Решение Solution
- Для устранения этой проблемы: To fix this problem
- Отключение отладки на уровне ядра в текущем сеансе To disable kernel debugging in the current session
- Отключение отладки на уровне ядра для всех сеансов (Windows Vista и Windows 7) To disable kernel debugging for all sessions (Windows Vista and Windows 7)
- Отключение отладки на уровне ядра для всех сеансов (другие операционные системы Windows) To disable kernel debugging for all sessions (other Windows operating systems)
- Выполнение отладки с помощью отладчика ядра To debug with the Kernel Debugger
- При включаем режиме отладки Windows зависает, если отладка не подключена
- Симптомы
- Причина
- Решение
- Дополнительные сведения
- Ошибки удаленной отладки и их устранение Remote Debugging Errors and Troubleshooting
- Запуск удаленного отладчика в качестве администратора Run the remote debugger as an administrator
- Запуск удаленного отладчика как службы When running the remote debugger as a service
- Запуск удаленного отладчика как приложения (обычный режим) When running the remote debugger as an application (normal mode)
- Практическое руководство. Отладка приложений служб Windows How to: Debug Windows Service Applications
- Отладка службы To debug a service
- Советы по отладке для служб Windows Debugging Tips for Windows Services
- Практическое руководство. Запуск службы Windows как консольного приложения How to: Run a Windows Service as a console application
Ошибка: отладка невозможна, поскольку в системе включен отладчик ядра Error: Debugging Isn’t Possible Because a Kernel Debugger is Enabled on the System
При отладке управляемого кода может появиться следующее сообщение об ошибке: When you debug managed code, you might receive the following error message:
Это сообщение появляется при попытке произвести отладку управляемого кода: This message occurs when you try to debug managed code:
в системе Windows 7 Windows 7 или Windows Vista Windows Vista , которая была запущена в режиме отладки; on a Windows 7 Windows 7 or Windows Vista Windows Vista system that has been started in debug mode.
для приложения, использующего среду CLR версии CLR 2.0, 3.0 или 3.5. the application uses the CLR version CLR 2.0, 3.0, or 3.5.
Решение Solution
Для устранения этой проблемы: To fix this problem
Обновите приложение, чтобы использовалась среда CLR версии 4.0 или 4.5. Upgrade your application to use CLR version 4.0 or 4.5
Отключите отладку на уровне ядра и выполняйте отладку в Visual Studio Visual Studio . Disable kernel debugging and debug in Visual Studio Visual Studio .
Выполняйте отладку с использованием отладчика ядра вместо отладки в Visual Studio Visual Studio . Debug using the Kernel Debugger instead of Visual Studio Visual Studio .
В отладчике ядра отключите исключения режима пользователя. In the Kernel Debugger, disable user-mode exceptions.
Отключение отладки на уровне ядра в текущем сеансе To disable kernel debugging in the current session
В командной строке введите следующее: At the command prompt, type:
Отключение отладки на уровне ядра для всех сеансов (Windows Vista и Windows 7) To disable kernel debugging for all sessions (Windows Vista and Windows 7)
В командной строке введите следующее: At the command prompt, type:
Перезагрузите компьютер. Restart the computer.
Отключение отладки на уровне ядра для всех сеансов (другие операционные системы Windows) To disable kernel debugging for all sessions (other Windows operating systems)
Найдите файл boot.ini на системном диске (обычно C:\). Locate boot.ini on your system drive (usually C:\). Файл boot.ini может быть скрыт и иметь атрибут «только для чтения». The boot.ini file might be hidden and read-only. Поэтому для его отображения необходимо использовать следующую команду: Therefore, you must use the following command to see it:
Откройте файл boot.ini с помощью программы «Блокнот» и удалите следующие параметры: Open boot.ini using Notepad and remove the following options:
Перезагрузите компьютер. Restart the computer.
Выполнение отладки с помощью отладчика ядра To debug with the Kernel Debugger
Если отладчик ядра подключен, появится сообщение с запросом, нужно ли продолжать отладку. If the Kernel Debugger is hooked up, you will see a message that asks whether you want to continue to debug. Нажмите кнопку, чтобы продолжить. Click the button to continue.
Может появиться User break exception(Int 3). Если это произойдет, введите следующую команду отладчика ядра для продолжения отладки: You might get a User break exception(Int 3). If this occurs, type the following Kernel Debugger command to continue to debug:
При включаем режиме отладки Windows зависает, если отладка не подключена
В этой статье приводится решение проблемы, из-за которой операционная система с включенным режимом отладки может зависать, если отладка не подключена.
Исходная версия продукта: Windows 7 Пакет обновления 1, Windows Server 2012 R2
Исходный номер КБ: 2816225
Симптомы
На компьютере под управлением Windows 7 или Windows Server 2008 R2 после установки средств отладки для Windows операционная система с включенным режимом отладки может зависать, если приложение вымеает исключение в пользовательском режиме.
Причина
Если режим отладки включен, а отладка не подключена из-за исключения пользовательского режима, система будет зависать в ожидании отладки, чтобы отладка вступила в силу в точке останова.
Решение
Чтобы устранить эту проблему, отключите режим отладки одним из следующих методов:
Использование параметров конфигурации системы
- При нажатии клавиши Windows Key+R открывается окно «Выполнить».
- Введите MSCONFIG и нажмите ввод.
- Выберите вкладку «Загрузка» и выберите дополнительные параметры.
- Отлажься на этом поле.
- Нажмите OK.
- Выберите «Применить» и «ОК».
- Перезагрузите компьютер.
Использование интерфейса командной строки
- Откройте командную подсказку с повышенными повышенными уровнями.
- Введите следующую команду и нажмите ввод:
bcdedit -debug off - Перезагрузите компьютер.
Дополнительные сведения
Windows не следует постоянно запускать в режиме отлаживания. Режим отладки включен для подключения к отладки ядра с помощью отладок, таких как средства отладки для Windows (WinDbg), и его необходимо отключить после выполнения этой задачи.
Некоторые системы Windows 7 могут поставляться с включенным переключателем DEBUG, чтобы отключить его.
Чтобы скачать средства отладки для Windows и дополнительные сведения, см. скачать комплект драйверов для Windows (WDK).
Ошибки удаленной отладки и их устранение Remote Debugging Errors and Troubleshooting
Во время удаленной отладки возможны перечисленные ниже ошибки. You may come across the following errors when attempting to debug remotely.
Запуск удаленного отладчика в качестве администратора Run the remote debugger as an administrator
Если удаленный отладчик запускается не от имени администратора, могут возникнуть проблемы. You may come across issues if you don’t run the remote debugger as an administrator. Например, возможна следующая ошибка: «У удаленного отладчика Visual Studio(MSVSMON.EXE) недостаточно привилегий для отладки этого процесса». For example, you may see the following error: «The Visual Studio Remote Debugger (MSVSMON.EXE) has insufficient privileges to debug this process.» При запуске удаленного отладчика в качестве приложения (а не службы) может возникнуть ошибка, связанная с использованием другой учетной записи пользователя. If you are running the remote debugger as an application (not a service), you may see the different user account error.
Запуск удаленного отладчика как службы When running the remote debugger as a service
При запуске удаленного отладчика в качестве службы рекомендуется запускать его от имени администратора по нескольким причинам. When running the remote debugger as s service, we recommend running it as an administrator for several reasons:
Служба удаленного отладчика допускает подключения только от администраторов, поэтому при запуске от имени администратора не будет дополнительных рисков безопасности. The remote debugger service only allows connections from administrators, so there are no new security risks introduced by running it as an administrator.
Могут предотвращаться ошибки, возникающие, когда у пользователя Visual Studio больше прав на отладку процесса, чем у самого удаленного отладчика. It can prevent errors that result when the Visual Studio user has more rights to debug a process than the remote debugger itself does.
Это позволяет упростить установку и настройку удаленного отладчика. To simplify the setup and configuration of the remote debugger.
Хотя вы можете выполнять отладку, не запуская удаленный отладчик от имени администратора, для этого необходимо соблюсти ряд требований, которые часто требуют дополнительных шагов по настройке службы. While it’s possible to debug without running the remote debugger as an administrator, there are several requirements to make this work correctly and they often require more advanced service configuration steps.
Учетная запись, используемая на удаленном компьютере, должна иметь право на вход в качестве службы. The account you are using on the remote machine must have the logon as service privilege. См. инструкции в разделе «Настройка входа в качестве службы» статьи с описанием ошибки Не удается подключиться. See the steps under «To add logon as a service» in the cannot connect back error article.
Учетная запись должна иметь права на отладку целевого процесса. The account must have rights to debug the target process. Чтобы получить эти права, необходимо запустить удаленный отладчик с той же учетной записью, что и отлаживаемый процесс. To get these rights, you must run the remote debugger under the same account as the process to be debugged. (Проще запустить службу от имени администратора.) (The easier alternative is to run the service as an administrator.)
Учетная запись должна иметь возможность подключения к компьютеру Visual Studio по сети (то есть проверки подлинности на этом компьютере). The account must be able to connect back to (that is, authenticate with) the Visual Studio computer over the network. В домене выполнить подключение проще, если удаленный отладчик выполняется со встроенной учетной записью локальной системы или сетевой службы либо с учетной записью домена. On a domain, it is easier to connect back if the remote debugger is running under the built-in Local System or Network Service accounts, or a domain account. Встроенные учетные записи имеют повышенные права безопасности, из-за чего могут возникать риски для безопасности. The built-in accounts have elevated security privileges that can present a security risk.
Запуск удаленного отладчика как приложения (обычный режим) When running the remote debugger as an application (normal mode)
При попытке присоединиться к собственному процессу без повышенных привилегий (например, к обычному приложению) не имеет значения, выполняется ли удаленный отладчик от имени администратора или нет. If you are trying to attach to your own non-elevated process (such as a normal application), it doesn’t matter if you are running the remote debugger as an administrator.
Удаленный отладчик желательно запускать от имени администратора в нескольких сценариях: You want to run the remote debugger as an administrator in several scenarios:
Необходимо присоединиться к процессу, запущенному от имени другого пользователя (например, при отладке IIS). You want to attach to processes running as another user (such as when debugging IIS), or
Вы пытаетесь запустить другой процесс от имени администратора. You are trying to launch another process, and the process you want to launch is an administrator.
Если вы хотите запустить другой процесс не от имени администратора, запускать отладчик от имени администратора не требуется. You do not want to run as an administrator if you want to launch processes, and the process you want to launch should not be an administrator.
Практическое руководство. Отладка приложений служб Windows How to: Debug Windows Service Applications
Служба должна запускаться из диспетчера управления службами, а не из Visual Studio. A service must be run from within the context of the Services Control Manager rather than from within Visual Studio. Поэтому, процесс отладки службы сложнее, чем отладка приложений Visual Studio других типов. For this reason, debugging a service is not as straightforward as debugging other Visual Studio application types. Для отладки службы необходимо запустить службу, а затем подключить отладчик к процессу, в котором она выполняется. To debug a service, you must start the service and then attach a debugger to the process in which it is running. Приложение можно отлаживать с помощью всех стандартных средств отладки Visual Studio. You can then debug your application by using all of the standard debugging functionality of Visual Studio.
Не следует присоединять к процессу, если неизвестно, что собой представляет данный процесс, и неясны последствия подключения к процессу (включая даже уничтожение этого процесса). You should not attach to a process unless you know what the process is and understand the consequences of attaching to and possibly killing that process. Например, при подключении к процессу WinLogon и последующей остановке процесса отладки система будет остановлена, так как она не может работать без данного процесса. For example, if you attach to the WinLogon process and then stop debugging, the system will halt because it can’t operate without WinLogon.
Отладчик можно прикреплять только к выполняющейся службе. You can attach the debugger only to a running service. Процесс подключения прерывает текущую работу службы (фактически он не останавливает и не приостанавливает ее). The attachment process interrupts the current functioning of your service; it doesn’t actually stop or pause the service’s processing. То есть, если служба уже выполнялась на момент запуска процесса отладки, она по-прежнему технически находится в состоянии «Started» в ходе отладки, однако ее работа приостанавливается. That is, if your service is running when you begin debugging, it is still technically in the Started state as you debug it, but its processing has been suspended.
После присоединения к процессу можно установить точки останова и использовать их для отладки кода. After attaching to the process, you can set breakpoints and use these to debug your code. После выхода из диалогового окна, используемого для подключения к процессу, вы продолжаете оставаться в режиме отладки. Once you exit the dialog box you use to attach to the process, you are effectively in debug mode. Для запуска, остановки, приостановки и продолжения работы служб (то есть, попадания в заданные точки) можно использовать диспетчер управления службами. You can use the Services Control Manager to start, stop, pause and continue your service, thus hitting the breakpoints you’ve set. Позднее эту фиктивную службу можно удалить после успешного завершения отладки. You can later remove this dummy service after debugging is successful.
В этой статье рассматривается процесс отладки службы, выполняемой на локальном компьютере (также можно выполнять отладку служб Windows, которые выполняются на удаленном компьютере). This article covers debugging a service that’s running on the local computer, but you can also debug Windows Services that are running on a remote computer. См. статью об удаленной отладке. See Remote Debugging.
Процесс отладки метода OnStart может быть сложным, так как диспетчер управления службами накладывает ограничение в 30 секунд на все попытки запуска службы. Debugging the OnStart method can be difficult because the Services Control Manager imposes a 30-second limit on all attempts to start a service. Дополнительные сведения см. в статье Устранение неполадок. Отладка служб Windows. For more information, see Troubleshooting: Debugging Windows Services.
Для получения значимой информации для отладки отладчик Visual Studio должен найти файлы символов для двоичных файлов, для которых выполняется отладка. To get meaningful information for debugging, the Visual Studio debugger needs to find symbol files for the binaries that are being debugged. При отладке службы, созданной в Visual Studio, файлы символов (PDB-файлы) находятся в той же папке, что и исполняемый файл или библиотека, и отладчик загружает их автоматически. If you are debugging a service that you built in Visual Studio, the symbol files (.pdb files) are in the same folder as the executable or library, and the debugger loads them automatically. При отладке службы, которая не была построена, сначала следует найти символы для службы и убедиться, что они могут быть найдены отладчиком. If you are debugging a service that you didn’t build, you should first find symbols for the service and make sure they can be found by the debugger. См. руководство по определению файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio. See Specify Symbol (.pdb) and Source Files in the Visual Studio Debugger. Если вы выполняете отладку системного процесса или хотите иметь символы для системных вызовов в своих службах, то необходимо добавить серверы символов Майкрософт. If you’re debugging a system process or want to have symbols for system calls in your services, you should add the Microsoft Symbol Servers. См. статью об отладке с помощью символов. See Debugging Symbols.
Отладка службы To debug a service
Постройте службу в конфигурации отладки. Build your service in the Debug configuration.
Установите службу. Install your service. Дополнительные сведения см. в разделе Практическое руководство. Установка и удаление служб. For more information, see How to: Install and Uninstall Services.
Запустите службу из диспетчера служб, обозревателя сервера или из кода. Start your service, either from Services Control Manager, Server Explorer, or from code. Дополнительные сведения см. в разделе Практическое руководство. Запуск служб. For more information, see How to: Start Services.
Запустите Visual Studio с учетными данными администратора, чтобы вы могли подключиться к системным процессам. Start Visual Studio with administrative credentials so you can attach to system processes.
(Необязательное действие.) В строке меню Visual Studio последовательно выберите Инструменты и Параметры. (Optional) On the Visual Studio menu bar, choose Tools, Options. В диалоговом окне Параметры последовательно выберите Отладка и Символы, установите флажок Серверы символов Microsoft и нажмите кнопку ОК. In the Options dialog box, choose Debugging, Symbols, select the Microsoft Symbol Servers check box, and then choose the OK button.
В строке меню в меню Отладка или Инструменты выберите пункт Присоединение к процессу. On the menu bar, choose Attach to Process from the Debug or Tools menu. (Клавиатура: CTRL+ALT+P) (Keyboard: Ctrl+Alt+P)
Откроется диалоговое окно Процессы. The Processes dialog box appears.
Установите флажок Показать процессы, запущенные всеми пользователями. Select the Show processes from all users check box.
В разделе Доступные процессы выберите процесс для службы и нажмите кнопку Присоединиться. In the Available Processes section, choose the process for your service, and then choose Attach.
Процесс будет иметь то же имя, что и исполняемый файл для службы. The process will have the same name as the executable file for your service.
Откроется диалоговое окно Присоединение к процессу . The Attach to Process dialog box appears.
Выберите соответствующие параметры, а затем нажмите кнопку ОК, чтобы закрыть диалоговое окно. Choose the appropriate options, and then choose OK to close the dialog box.
Теперь вы находитесь в режиме отладки. You are now in debug mode.
Установите точки останова, которые буден нужно использовать в коде. Set any breakpoints you want to use in your code.
Откройте диспетчер управления службами и выполните несколько операций со своей службой (выполните команды остановки, приостановки и продолжения), чтобы обнаружить свои точки останова. Access the Services Control Manager and manipulate your service, sending stop, pause, and continue commands to hit your breakpoints. Дополнительные сведения о запуске диспетчера управления службами см. в разделе Практическое руководство. Запуск служб. For more information about running the Services Control Manager, see How to: Start Services. Также см. раздел Устранение неполадок. Отладка служб Windows. Also, see Troubleshooting: Debugging Windows Services.
Советы по отладке для служб Windows Debugging Tips for Windows Services
Присоединение к процессу службы позволяет отлаживать основную часть кода (но не весь код) для этой службы. Attaching to the service’s process allows you to debug most, but not all, the code for that service. Например, так как служба уже была запущена, нельзя выполнять отладку кода в методе OnStart службы или кода в методе Main , который используется для загрузки службы подобным образом. For example, because the service has already been started, you cannot debug the code in the service’s OnStart method or the code in the Main method that is used to load the service this way. Одним из способов обхода этого ограничения является создание временной второй службы в приложении службы, которая предназначена только для отладки. One way to work around this limitation is to create a temporary second service in your service application that exists only to aid in debugging. Можно установить обе службы,а затем запустить эту фиктивную службу для загрузки процесса службы. You can install both services, and then start this dummy service to load the service process. Когда временная служба запустит процесс, в Visual Studio в меню Отладка можно будет присоединиться к процессу службы. Once the temporary service has started the process, you can use the Debug menu in Visual Studio to attach to the service process.
Попробуйте добавлять вызовы в метод Sleep с целью задержки выполнения действия, пока вы не присоединитесь к процессу. Try adding calls to the Sleep method to delay action until you’re able to attach to the process.
Попробуйте заменить программу на обычное консольное приложение. Try changing the program to a regular console application. Для этого измените метод Main следующим образом, чтобы он мог быть запущен и как служба Windows, и как консольное приложение (в зависимости от способа запуска). To do this, rewrite the Main method as follows so it can run both as a Windows Service and as a console application, depending on how it’s started.
Практическое руководство. Запуск службы Windows как консольного приложения How to: Run a Windows Service as a console application
Добавьте метод в свою службу, которая запускает методы OnStart и OnStop: Add a method to your service that runs the OnStart and OnStop methods:
Перепишите метод Main следующим образом: Rewrite the Main method as follows:
В окне свойств проекта на вкладке Приложение задайте для параметра Тип выходных данных значение Консольное приложение. In the Application tab of the project’s properties, set the Output type to Console Application.
Щелкните Начать отладку (F5). Choose Start Debugging (F5).
Чтобы снова запустить программу как службу Windows, установите ее и запустите обычным образом (для службы Windows). To run the program as a Windows Service again, install it and start it as usual for a Windows Service. Отменять эти изменения необязательно. It’s not necessary to reverse these changes.
В некоторых случаях, например, если требуется устранить некоторую проблему, которая возникает только при запуске системы, необходимо использовать отладчик Windows. In some cases, such as when you want to debug an issue that occurs only on system startup, you have to use the Windows debugger. Скачайте набор драйверов Windows (WDK) и узнайте о способах отладки служб Windows. Download the Windows Driver Kit (WDK) and see How to debug Windows Services.