Присоединение к программе
После регистрации программ с соответствующим портом необходимо подключить отладчик к программе, которую вы хотите отладить.
Выбор способа присоединения
Существует три способа, с помощью которых диспетчер отладки сеансов пытается подключиться к отлаживаемой программе.
- Для программ, запускаемых подсистемой отладки с помощью метода LaunchSuspended (типичный для интерпретированных языков, например), SDM получает интерфейс IDebugProgramNodeAttach2 из объекта IDebugProgramNode2, связанного с присоединенной программой. Если SDM может получить IDebugProgramNodeAttach2 интерфейс, SDM вызывает метод OnAttach . Метод IDebugProgramNodeAttach2::OnAttach возвращается S_OK , чтобы указать, что он не был присоединен к программе и что другие попытки можно выполнить для присоединения к программе.
- Если SDM может получить интерфейс IDebugProgramEx2 из подключенной программы, SDM вызывает метод Attach . Этот подход является типичным для программ, которые были запущены удаленно поставщиком портов.
- Если программа не может быть подключена через IDebugProgramNodeAttach2::OnAttach метод или IDebugProgramEx2::Attach методы, SDM загружает подсистему отладки (если она еще не загружена), вызывая CoCreateInstance функцию, а затем вызывает метод Attach . Этот подход является типичным для программ, запускаемых локально поставщиком портов. Кроме того, поставщик пользовательского порта может вызвать IDebugEngine2::Attach метод в реализации поставщика пользовательского IDebugProgramEx2::Attach порта. Как правило, в этом случае поставщик пользовательского порта запускает подсистему отладки на удаленном компьютере. Вложение достигается, когда диспетчер отладки сеанса вызывает метод Attach . Если вы запускаете de de в том же процессе, что и приложение для отладки, необходимо реализовать следующие методы IDebugProgramNode2:
- GetHostName
- GetHostPid
- GetProgramName IDebugEngine2::Attach После вызова метода выполните следующие действия в реализации IDebugEngine2::Attach метода:
Примечание. При реализации IDebugProgramNodeAttach2 интерфейса программа GUID передается методу IDebugProgramNodeAttach2::OnAttach . Используется GUID для возвращаемых методом IDebugProgram2::GetProgramId программ GUID .
Примечание. Это не тот же IDebugProgram2 объект, который был передан в IDebugEngine2::Attach метод. Ранее переданный IDebugProgram2 объект распознается только портом и является отдельным объектом.
Связанный контент
- Вложение на основе запуска
- Отправка событий
- LaunchSuspended
- IDebugProgram2
- IDebugProgramCreateEvent2
- IDebugProgramNodeAttach2
- OnAttach
- IDebugProgramNode2
- GetProgramId
- IDebugProgramEx2
- Присоединить
- Присоединить
Подключение непосредственно к программе
Пользователи, которые хотят отладить программы в процессе, который уже выполняется, обычно следует этому процессу:
- В интегрированной среде разработки выберите команду «Отладка процессов » в меню «Сервис «. Откроется диалоговое окно Процессы.
- Выберите процесс и нажмите кнопку «Присоединить «. Откроется диалоговое окно «Присоединение к процессу «, в котором перечислены все модули отладки (DEs), установленные на компьютере.
- Укажите DES для отладки выбранного процесса и нажмите кнопку «ОК«. Пакет отладки запускает сеанс отладки и передает в него список DES. Сеанс отладки, в свою очередь, передает этот список вместе с функцией обратного вызова в выбранный процесс, а затем запрашивает процесс перечисления выполняемых программ. Программно в ответ на запрос пользователя пакет отладки создает экземпляр диспетчера отладки сеанса (SDM) и передает в него список выбранных DES. Вместе со списком пакет отладки передает интерфейс IDebugEventCallback2 . Пакет отладки передает список DES выбранному процессу путем вызова IDebugProcess2::Attach. Затем SDM вызывает IDebugProcess2::EnumPrograms на порту, чтобы перечислить программы, выполняемые в процессе. С этого момента каждый модуль отладки подключается к программе точно так же, как подробно описано в приложении присоединения после запуска с двумя исключениями. Для повышения эффективности DES, реализованные для совместного использования адресного пространства с SDM, группируются таким образом, чтобы каждый de имеет набор программ, к которым он присоединяется. В этом случае IDebugProcess2 вызывает IDebugEngine2::Attach и передает его массив программ для подключения. Второе исключение заключается в том, что события запуска, отправленные DE, присоединенные к программе, которая уже запущена, обычно не включают событие точки входа.
Связанный контент
- Отправка событий запуска после запуска
- Задачи отладки
Не удается присоединиться к процессу
Не удается присоединиться к процессу. Компонент отладчика на сервере получил отказ в доступе при подключении к этому компьютеру.
Существуют два типичных скрипта, вызывающих эту ошибку:
Сценарий 1. Компьютер A работает под управлением Windows XP. Компьютер B работает под управлением Windows Server 2003. Реестр на компьютере B содержит следующее значение DWORD:
Пользователь 1 запускает сеанс службы терминалов (сеанс 1) на компьютере B и запускает управляемое приложение из этого сеанса.
Пользователь 2, являющийся администратором обоих компьютеров, вошел в систему компьютера A. С этого компьютера он пытается установить подключение к приложению, которое выполняется в сеансе 1 на компьютере B.
Сценарий 2. Один пользователь зашел в систему на двух компьютерах — A и B — в одной и той же рабочей группе, используя одинаковые пароли на обоих компьютерах. Отладчик выполняется на компьютере A и пытается подключиться к управляемому приложению, работающему на компьютере B. Компьютер A имеет сетевой доступ: модель общего доступа и безопасности для локальных учетных записей , для которых задано значение Guest.
Решение скрипта 1
- Запустите отладчик и управляемое приложение под одним и тем же именем учетной записи пользователя и паролем.
Решение скрипта 2
- В меню Пуск выберите Панель управления.
- На панели управления дважды щелкните Администрирование.
- В окне «Администрирование» дважды щелкните пункт Локальная политика безопасности.
- В окне «Локальная политика безопасности» выберите Локальные политики.
- В столбце Политики дважды щелкните Сетевой доступ: модель совместного доступа и безопасности для локальных учетных записей.
- В диалоговом окне Доступ к сети: модели безопасности и совместного использования локальных учетных записей измените локальный параметр безопасности на Классический и нажмите кнопку ОК.
Внимание Изменение модели безопасности на обычную может привести к непредвиденным возможностям доступа к общим файлам и DCOM-компонентам. Если сделать это, удаленный пользователь сможет проходить проверку подлинности под локальной учетной записью пользователя вместо записи «Гость». Если удаленный пользователь совпадает с именем пользователя и паролем, он сможет получить доступ к любой папке или объекту DCOM, которым вы предоставили общий доступ. Если вы используете эту модель безопасности, убедитесь, что все учетные записи пользователей на компьютере имеют надежные пароли или настройте изолированный сетевой остров для отладчика и отладки компьютеров, чтобы предотвратить несанкционированный доступ.
См. также
Присоединение вместо отладки, как бороться?

По поиску в интернете уже и из реестра удалял некоторые строки, восстанавливал программу Visual studio, но все пусто, вместо «присоединения» отладка не появляется.
При выборе процессов также ничего полезного не происходит.
Буду очень благодарен за помощь!
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

«Присоединение» вместо «отладки» при открытии файла с расширением .c
1. При открытии файлов не появляется кнопка запуска отладки, вместо неё "присоединение", как.
Не отображается запуск, вместо него присоединение
Здравствуйте, совсем недавно начал пользоваться Visual Studio, и сразу появилась проблема. Создаю.

Присоединение вместо запуска программы
Когда я перезапускаю VS или комп то запускаю проект путем (Захожу в папку проекта -> нахожу файл.
Непонятное окно вместо окна отладки
странно, но не могу понять в чем проблема, на дом. компе стоит этот же релиз студии но там все.
Администратор
![]()
16746 / 13156 / 5155
Регистрация: 17.03.2014
Сообщений: 26,825
Записей в блоге: 1

Сообщение было отмечено Xpert1993 как решение
Решение
Xpert1993, похоже ты открыл cpp файл без создания проекта. Создай новый C++ проект и команды запуска/отладки станут доступными.