Служба удаленного отладчика x86 на x64

Можно ли установить удаленный отладчик x86 в качестве службы на 64-битном компьютере? Мне нужно подключить отладчик к управляемому коду в процессе сеанса 0. Процесс работает 32-битным, но устанавливаемая служба отладчика является 64-битной и не будет подключаться к 32-битному процессу.

Я попытался создать службу с помощью команды SC, смог запустить службу и убедился, что она работает в процессах диспетчера задач. Однако, когда я попытался подключиться к нему с помощью Visual Studio, он сказал, что монитор удаленного отладчика не включен. Когда я остановил службу x86 и запустил службу x64, он смог найти монитор, но все равно получил ошибку.

Вот ошибка, когда я пытаюсь использовать удаленный отладчик: Невозможно подключиться к процессу. 64-разрядная версия монитора удаленной отладки Visual Studio (MSVSMON.EXE) не может отлаживать 32-разрядные процессы или 32-разрядные дампы. Вместо этого используйте 32-битную версию.

Вот ошибка, когда я пытаюсь подключиться локально: Присоединение к процессу в другом сеансе терминального сервера на этом компьютере не поддерживается. Попробуйте выполнить удаленную отладку на компьютере и запустить монитор удаленной отладки Microsoft Visual Studio в сеансе процесса.

Если я попытаюсь запустить 32-битный удаленный отладчик как приложение, он не будет работать, прикрепить b / c удаленный отладчик работает в моем сеансе, а не в сеансе 0.

Не могли бы вы подробнее рассказать о проблеме? о какой 32-битной службе идет речь? В чем именно заключается ошибка - вы имеете в виду разрядность, но 64-разрядный отладчик должен иметь возможность загружать 32-разрядный управляемый код, afaik.

x0n 17.09.2008 00:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
1
23 957
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Я этого не пробовал, но вот предложение:

Попробуйте установить службу удаленного отладчика x86 вручную.

sc create "Remote Debugger" binpath= "C:\use\short\filename\in\the\path\x86\msvsmon.exe /service msvsmon90"

Два примечания:

  • Вам нужно будет использовать короткие имена файлов в пути к msvsmon.exe к предотвратить необходимость цитировать путь (так как вся команда должна быть цитируется)
  • после "binpath =" (без пробелов перед '=' символ). Кто бы ни написал парсер командной строки для sc командование должно быть проклято.

Затем вы можете использовать апплет панели управления services.msc, чтобы запустить его с правильными учетными данными.

Вероятно, вам придется остановить или, возможно, даже удалить существующую службу удаленного отладчика x64.

Ответ принят как подходящий

Это работает на моей машине (TM) после установки rdbgsetup_x64.exe и прохождения мастера настройки:

sc stop msvsmon90
sc config msvsmon90 binPath= "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe /service msvsmon90"
sc start msvsmon90

Я могу подтвердить, что то, что вы хотите сделать, действительно сработает. Я часто подключаю свою 32-битную рабочую станцию ​​xp к серверу x64 win 2003 с удаленным отладчиком VS 2008.

У нас была такая же проблема при удаленной отладке веб-сайта, который работает как 32-битный внутри 64-битного IIS.

Вы также можете сделать это:

  • Остановить службу отладки по умолчанию (который будет x64 как установщик будет умно и настроено тот, чтобы бежать).
  • Перейдите к запуску удаленного отладчика папку меню и запустите отладку x86 служба. Игнорируйте предупреждение о
    32 бит / 64 бит.
  • Откройте окно Инструменты-> Параметры окно приложения удаленного отладчика и make
    обратите внимание на значение в 'Server
    Текстовое поле "Имя".
  • Теперь вы можете прикрепить свою визуальную студию к нему, скопировав "Имя сервера"
    значение в текст / комбинацию "Квалификатор" в диалоговом окне "Присоединить к процессу" Visual Studio.

В связи с этим, существует также низкоуровневая ошибка с аутентификацией Kerberos, если вы подключаетесь из Windows 2008/7 / Vista к машине 2003 года, о которой сообщается в MS (а затем закрывается как `` внешняя '') через Connect здесь: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=508455

Мы зарегистрировали новую ошибку в MS Connect о проблеме аутентификации Kerberos здесь: connect.microsoft.com/WindowsServerFeedback/feedback/…. Если кто-то еще столкнется с этой проблемой, проголосуйте за нее - у меня есть скрытое подозрение, что команда Windows просто вернет ее обратно команде VS.

Andras Zoltan 08.12.2009 15:34

Для меня это сработало как шарм! Спасибо! Просто нужно было запустить параметр x86 из меню «Пуск». Намного проще, чем иметь дело с сервисом.

Josh P 05.06.2014 20:52

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

Phil Penn 10.12.2014 23:30

Когда я установил средства удаленной отладки, в меню «Пуск» не было ссылки на службу отладки x86. Перейдите в каталог, в котором он установлен, проверив ярлык x64, и вы его найдете.

DannyMeister 11.06.2015 19:35

У меня заработало без установки дополнительного ПО. Я просто скопировал папку C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger на виртуальную машину и запустил msvsmon.exe из папки x86. И мой гость, и хозяин - x64.

«Удаленный» отладчик подразумевает его на сервере. Затем нужно убедиться, что он установлен на сервере. Да, он также устанавливается вместе с Visual Studio на вашу рабочую станцию ​​для локальной отладки. Вы только что скопировали исполняемый файл, например, это Mac или что-то в этом роде !!

Mike Grimm 09.09.2019 22:13

1) Установите версию x64. При этом также устанавливается отладчик x86, но не создается ярлык.

2) Вы можете найти исполняемый файл для отладки процесса x86 здесь ... C: \ Program Files \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Remote Debugger \ x86 \ msvsmon.exe

3) Если хотите, закрепите его на панели задач.

Иногда возникала эта ошибка, я просто закрываю визуальную студию и снова открываю, все в порядке!

Очень странное поведение от vs

Сегодня я столкнулся с этой проблемой (64-битная ОС и VS 2019). Я изменил конфигурацию, чтобы использовать x64 для проекта, IISExpress, чтобы использовать 64-разрядную версию, а цель платформы - x64. Он по-прежнему использовал 32-битный отладчик и жаловался. Наконец, когда я включил отладку сценариев, он начал использовать 64-битный отладчик. Так что я бы сказал, что сочетание всего этого добилось.

Другие вопросы по теме