Отладчик visual studio не подключается к unity

Обновлено: 07.07.2024

у меня возникли проблемы с подключением отладчика Visual Studio к Unity-редактирование и компиляция скриптов внутри VS работает нормально-однако при нажатии "прикрепить к Unity" или "прикрепить к Unity и Play" код компилируется, но больше ничего не происходит. Если все сборки обновлены, то кнопка вообще ничего не делает. Я могу вручную запустить игру внутри Unity и запустить обновленный код, но он не подключен к отладчику VS.

У меня есть Unity 5.3.5, Visual Studio Инструменты для Unity 2.2.0.0 и Visual Studio Community 2015, установленные на моем компьютере. Все инструменты Unity отображаются в Visual Studio (прикрепление к Unity и т. д.).

Going Tools > Attach To Unity Debugger inside VS выводит правильный список открытых экземпляров редактора Unity, но выбор одного не присоединяется к нему. Как и предполагалось здесь Я попытался использовать 127.0.0.1 в качестве конечной точки IP, но это все равно не сработало. Я разрешил Unity и VS через настройки брандмауэра, чтобы нет выгода.

единства Help > About также отображаются инструменты Visual Studio для номера версии Unity, поэтому он знает о существовании плагина.

Я загрузил VS через devenv.exe /log чтобы увидеть, не происходит ли что - то странное-журнал выглядел нормально, и что инструменты Unity были загружены правильно. (Журнал здесь если это имеет какое-либо значение.)

Я сделал переустановку ремонта на VS, Unity и VS Tools для Unity, которая была долгой и трудной, но изменилась ничего.

Это тоже убивало меня. Пройдя через все, что было установлено за последние несколько дней, и удалив и переустановив, я определил, что последний Xamarin сломал интеграцию VSTU. Я даже вернулся к VSTU 2.1 безрезультатно.

только удаление Xamarin позволило отладчику подключиться к Unity.

Итак, на данный момент мы должны использовать Xamarin или VSTU, но не Оба на одной машине, если мы хотим, чтобы отладчик VS присоединился к Unity.

Это действительно проблема совместимости между VSTU и XamarinVS. Мы работали с Xamarin и мы уже исправили это в наш мастер.

в ближайшее время мы выпустим новую версию VSTU с исправлением и дополнительными функциями.

с уважением Себастьен Лебретону [во вторник]

У меня была та же проблема, за исключением того, что инструмент не печатал никакого процесса unity. Удаление Xamarin также не помогло, и на самом деле я просто не смог прикрепить unity throw инструмент. (Процесс присоединения работал, но точка останова в коде не может быть достигнута).

на самом деле, это было потому, что я переименовал "единство.exe "к единству" 5.3.4f1.EXE-файл".

Visual Studio Tools for Unity необходимо присоединить к процессу Unity, и никакое другое имя не может быть обработано для сейчас.

два дня выброшены, пытаясь переустановить все. (PS: последнее "стабильное" обновление Xamarin сломало отладку iOS на iPhone через usb, чтобы Вы тоже знали. ).

In this section, you'll find solutions to common issues with Visual Studio Tools for Unity, descriptions of known issues, and learn how you can help improve Visual Studio Tools for Unity by reporting errors.

Troubleshooting the connection between Unity and Visual Studio

Confirm Editor Attaching is enabled or Code Optimization On Startup is set to Debug

In the Unity Menu, select Edit / Preferences .

Depending on the Unity version used :

  • Confirm that Code Optimization On Startup is set to Debug .
  • Or select the External Tools tab. Confirm that the Editor Attaching checkbox is enabled.

Unable to attach

  • Try to temporarily disable your antivirus or create exclusion rules for both VS and Unity.
  • Try to temporarily disable your firewall or create rules for allowing TCP/UDP networking between VS and Unity.
  • Some programs, like Team Viewer, can interfere with process detection. You can try to temporarily stop any extra software to see if it changes something.
  • Do not rename the main Unity executable, as VSTU is only monitoring "Unity.exe" processes.

Visual Studio crashes

This issue can be due to the Visual Studio MEF cache being corrupted.

Try removing the following folder to reset the MEF cache (close Visual Studio before doing this):

This should fix your issue. In case you are still experiencing the problem, run a Developer Command Prompt for Visual Studio as Administrator and use the following command:

Visual Studio stops responding

Several Unity plugins like Parse, FMOD, UMP (Universal Media Player), ZFBrowser, or Embedded Browser are using native threads. It’s an issue when a plugin ends up attaching a native thread to the runtime, which then does blocking calls to the OS. This means Unity can't interrupt that thread for the debugger (or domain reload) and stop responding.

For FMOD, there is a workaround, you can pass FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE initialization flag to disable asynchronous processing and perform all processing on the main thread.

Incompatible project in Visual Studio

The very important thing to know is that Visual Studio is saving the “Incompatible” state in project settings and will not try to reload a project until you explicitly use Reload Project . So, after each troubleshooting step, make sure you try to re-open the solution and try to right-click on all incompatible projects and choose Reload Project .

Extra reloads, or Visual Studio losing all open windows

Be sure to never touch project files directly from an asset processor or any other tool. If you really need to manipulate the project file, we expose an API for that. Please check the Assembly references issues section.

The debugger does not break on exceptions

On Windows, Visual Studio asks to download the Unity target framework

Assembly reference or project property issues

If your project is complex reference-wise or if you want to better control this generation step, you can use our API for manipulating the generated project or solution content. You can also use response files in your Unity project and we'll process them.

With recent Visual Studio and Unity versions, the best approach seems to use a custom Directory.Build.props file along with your generated projects. You will then be able to contribute to the project structure without interfering with the generation process.

Breakpoints with a warning

If Visual Studio is unable to find a source location for a specific breakpoint you will see a warning around your breakpoint. Check that the script you are using is properly loaded/used in the current Unity scene.

Breakpoints not hit

Unable to debug Android players

We use multicast for player detection (which is the default mechanism used by Unity), but after that we use a regular TCP connection to attach the debugger. The detection phase is the main issue for Android devices.

Wifi is versatile but super slow compared to USB because of latency. We saw a lack of proper multicast support for some routers or devices (Nexus series are well known for this).

USB is super-fast for debugging, and Visual Studio Tools for Unity is now able to detect USB devices, and talk to the adb server to properly forward ports for debugging.

Issues with IntelliSense or code coloration

Try upgrading your Visual Studio to the latest version. Try the same same troubleshooting steps as for Incompatible projects.

Known issues

When debugging, Unity sometimes crashes.

When debugging, Unity sometimes freezes.

Stepping into and out of methods sometimes behaves incorrectly, especially in iterators or within switch statements.

Report errors

Please help us improve the quality of Visual Studio Tools for Unity by sending error reports when you experience crashing, freezes, or other errors. This helps us investigate and fix problems in Visual Studio Tools for Unity. Thank you!

How to report an error when Visual Studio freezes

There are reports that Visual Studio sometimes freezes when debugging with Visual Studio Tools for Unity, but we need more data to understand this problem. You can help us investigate by following the steps below.

To report that Visual Studio freezes while debugging with Visual Studio Tools for Unity

Open a new instance of Visual Studio.

Open the Attach to Process dialog. In the new instance of Visual Studio, on the main menu, choose Debug, Attach to Process.

Attach the debugger to the frozen instance of Visual Studio. In the Attach to Process dialog, select the frozen instance of Visual Studio from the Available Processes table, then choose the Attach button.

Pause the Debugger. In the new instance of Visual Studio, on the main menu, choose Debug, Break All, or just press Ctrl+Alt+Break.

Create a thread-dump. In the Command window, enter the following command and press Enter:

You might need to make the Command window visible first. In Visual Studio, on the main menu, choose View, Other Windows, Command Window.

В этом разделе рассмотрены решения по устранению проблем, типичных для набора средств Visual Studio для Unity, приведено описание известных проблем и показано, как улучшить функционирование набора средств Visual Studio для Unity с помощью отчетов об ошибках.

Устранение неполадок соединения между Unity и Visual Studio

Параметр Confirm Editor Attaching включен или Code Optimization On Startup установлен в значение Debug

В меню Unity выберите Edit / Preferences .

В зависимости от используемой версии Unity:

  • Убедитесь, что Code Optimization On Startup для параметра задано значение Debug .
  • Или выберите External Tools вкладку. Убедитесь, что Editor Attaching флажок включен.

Не удается подключить

  • Попробуйте временно отключить антивирусную программу или создать правила исключения для VS и Unity.
  • Попробуйте временно отключить брандмауэр или создать правила, разрешающие сетевое взаимодействие между VS и Unity по протоколам TCP/UDP.
  • Некоторые программы, например Team Viewer могут препятствовать обнаружению процессов. Попробуйте временно остановить все лишнее программное обеспечение, чтобы выяснить, повлияет ли это на что-либо.
  • Не переименовывайте основной исполняемый файл Unity, так как VSTU отслеживают только процессы "Unity.exe".

Сбои Visual Studio

Эта проблема может быть вызвана повреждением кэша MEF в Visual Studio.

Попробуйте удалить следующую папку, чтобы сбросить кэш MEF (перед этим закройте Visual Studio):

Visual Studio не отвечает

Некоторые подключаемые модули Unity, такие как Parse, FMOD, UMP (Universal Media Player), ZFBrowser или Embedded Browser, используют собственные потоки. Эта проблема возникает, когда подключаемый модуль подключает собственный поток к среде выполнения, что блокирует вызовы ОС. Это означает, что Unity не может прервать этот поток для отладчика (или перезагрузки домена) и перестает отвечать на запросы.

Для FMOD существует обходной путь. Вы можете передать флаг инициализации FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE , чтобы отключить асинхронную обработку и выполнять всю обработку в основном потоке.

Несовместимый проект в Visual Studio

очень важно помнить, что Visual Studio сохраняет "несовместимое" состояние в параметрах проекта и не пытается перезагрузить проект до тех пор, пока не будет явно использован Reload Project . Поэтому после каждого шага устранения неполадок убедитесь, что вы пытаетесь повторно открыть решение, и попробуйте щелкнуть правой кнопкой мыши все несовместимые проекты и выбрать Reload Project .

Дополнительные перезагрузки или закрытие всех открытых окон в Visual Studio

Никогда не работайте с файлами проектов непосредственно из обработчика ресурсов или иного средства. Если вам действительно необходимо совершить операции с файлом проекта, мы предоставляем для этого интерфейс API. См. раздел Проблемы со ссылками на сборку.

В случае исключений не происходит останов отладчика

В ОС Windows система Visual Studio предлагает скачать целевую платформу Unity

Проблемы со ссылкой на сборку или свойством проекта

в случае последних версий Visual Studio и Unity лучшим подходом будет использование пользовательского Directory.Build.props файла вместе с созданными проектами. После этого вы сможете участвовать в структуре проекта, не мешая процессу создания.

Точки останова с предупреждением

Если Visual Studio не удается найти исходное расположение для определенной точки останова, рядом с ней отображается предупреждение. Убедитесь, что используемый вами скрипт правильно загружен и используется в текущей сцене Unity.

Точки останова не срабатывают

Не удается выполнить отладку проигрывателей Android

Мы используем для обнаружения проигрывателей многоадресную рассылку (это стандартный механизм, применяемый в Unity), но затем применяется простое соединение TCP для подключения отладчика. Этап обнаружения — основная проблема для устройств Android.

Связь через Wi-Fi универсальна, однако она слишком медленная по сравнению с USB из-за задержки. Мы наблюдали отсутствие должной поддержки многоадресной рассылки у некоторых маршрутизаторов или устройств (этим известна серия Nexus).

Связь по USB обладает отличной скоростью для отладки. Инструменты Visual Studio для Unity теперь могут обнаруживать устройства USB и согласовывать с сервером ADB правильную переадресацию портов для отладки.

Проблемы с IntelliSense или разметка кода

попробуйте обновить Visual Studio до последней версии. Выполните те же действия по устранению неполадок, что и для несовместимых проектов.

Известные проблемы

При отладке Unity иногда аварийно завершает работу.

При отладке Unity иногда зависает.

Пошаговая отладка с заходом и выходом из методов иногда ведет себя некорректно, особенно в итераторах или внутри инструкций switch.

Отчеты об ошибках

Помогите нам улучшить качество набора средств Visual Studio для Unity: отправляйте нам отчеты об ошибках при аварийном выходе, зависании или в случае других ошибок. Эти сведения помогают нам определять причину и устранять проблемы в наборе средств Visual Studio для Unity. Спасибо!

Как сообщить об ошибке в случае зависания Visual Studio

Существуют отчеты о том, что иногда Visual Studio зависает при отладке с помощью набора средств Visual Studio для Unity, но чтобы разобраться в проблеме, нам требуется больше данных. Вы можете помочь нам разобраться с проблемой, если выполните следующие действия.

Создание отчета о зависании Visual Studio во время отладки с помощью набора средств Visual Studio для Unity

Откройте новый экземпляр Visual Studio.

Откройте диалоговое окно "Присоединение к процессу". В новом экземпляре Visual Studio в главном меню выберите Отладка, Присоединение к процессу.

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

Приостановите отладчик. В новом экземпляре Visual Studio в главном меню выберите Отладка, Прервать все или просто нажмите CTRL+ALT+BREAK.

Создайте дамп потока. В окне командной строки введите следующую команду и нажмите клавишу ВВОД:

Возможно, сначала будет нужно отобразить окно Команда . В Visual Studio в главном меню выберите Представление, Другие окна, Командное окно.

Откройте терминал и получите идентификатор процесса Visual Studio для Mac:

Запустите отладчик lldb.

Подключитесь к экземпляру Visual Studio для Mac, используя идентификатор процесса:

У меня возникают проблемы с подключением отладчика Visual Studio к Unity - редактирование и компиляция скриптов внутри VS работает нормально - однако при нажатии кнопки «Присоединить к Unity» или «Присоединить к Unity и воспроизвести» код компилируется, но больше ничего не происходит. Если все сборки обновлены, кнопка вообще ничего не делает. Я могу вручную запустить игру внутри Unity, и она запускает обновленный код, но он не привязан к отладчику VS.

На моем компьютере установлены Unity 5.3.5, Visual Studio Tools для Unity 2.2.0.0 и Visual Studio Community 2015. Все инструменты Unity появляются внутри Visual Studio (прикрепить к Unity и т. Д.).

Переход Tools > Attach To Unity Debugger внутрь VS вызывает правильный список открытых экземпляров редактора Unity, но выбор одного из них не прикрепляется к нему. Как было предложено здесь, я попытался использовать 127.0.0.1 в качестве конечной точки IP, но это все равно не сработало. Я разрешил и Unity, и VS через настройки брандмауэра, но безрезультатно.

Unity Help > About также отображает номер версии Visual Studio Tools For Unity, поэтому он знает о существовании плагина.

Я загрузил VS через devenv.exe /log , чтобы увидеть, не происходит ли чего-нибудь странного - журнал выглядел нормально, и инструменты Unity были загружены правильно. (Журнал находится здесь, если он пригодится.)

Я выполнил ремонтную переустановку VS, Unity и VS Tools для Unity, что было долгим и трудным, но ничего не изменило.

4 ответа

Это тоже убивало меня. Пройдя через все, что было установлено за последние несколько дней, а также удалив и переустановив, я определил, что последний Xamarin нарушил интеграцию VSTU. Я даже вернулся на ВГТУ 2.1 безрезультатно.

Только удаление Xamarin позволило отладчику подключиться к Unity.

Итак, пока мы должны использовать либо Xamarin, либо VSTU, но не оба на одном компьютере, если мы хотим, чтобы отладчик VS подключался к Unity.

Это действительно проблема совместимости между VSTU и XamarinVS. Мы работали с Xamarin и уже исправили это в нашем master.

Вскоре мы выпустим новую версию VSTU с исправлением и дополнительными функциями.

С уважением, Себастьян Лебретон [MSFT]

У меня была та же проблема, за исключением того, что инструмент не печатал никакого процесса единства . Удаление Xamarin тоже не помогло, и на самом деле я просто не мог вообще присоединить инструмент единства. (Процесс подключения сработал, но точка останова в коде не может быть достигнута).

На самом деле это произошло потому, что я переименовал Unity.exe в Unity «5.3.4f1.exe» .

Инструменты Visual Studio для Unity необходимо присоединить к процессу Unity, и на данный момент никакое другое имя невозможно обработать.

Два дня выкинули, пытаясь переустановить ВСЕ . (PS: последнее «стабильное» обновление Xamarin сломало отладку iOS на iPhone через usb, просто чтобы вы тоже знали . ).

Читайте также: