Почему при удаленной отладке символы не загружаются?

StackOverflow https://stackoverflow.com/questions/151966

Вопрос

Я хочу использовать удаленную отладку.Программа, которую я хочу отладить, работает на машине b.Visual Studio работает на компьютере a.

На машине b у меня есть папка со следующими файлами:

  • msvcr72.dll
  • msvsmon.exe
  • NatDbgDE.dll
  • NatDbgDEUI.dll
  • NatDbgEE.dll
  • NatDbgEEUI.dll

Если вы считаете, что некоторые файлы отсутствуют, не могли бы вы также описать, где они обычно находятся?

На следующем этапе я начал msvsmon.exe и моя программа на машине b.На машине а я запустил Visual Studio 2008 и свое решение, в котором была написана программа.Затем я выбираю «Отладка — Присоединиться к процессу».Я выбрал «Удаленный транспорт (только собственный, без аутентификации)».Я использовал правильный IP-адрес в качестве квалификатора и выбрал правильный процесс (program.exe).Через некоторое время во всплывающем окне появилось следующее сообщение:

Необработанное исключение по адресу 0x7c812a7b в program.exe:0xE0434F4D:0xe0434f4d

Я могу продолжить или прерваться;При продолжении исключение возникает снова и снова и снова.Поэтому я нажал перерыв, и появилось следующее сообщение:

Никакие символы не загружаются ни для одного кадра стека вызовов.Исходный код не может быть отображен.

Это было полезно?

Решение

Обязательно скопируйте файл .PDB, созданный с помощью вашей сборки, в ту же папку на удаленном компьютере.Это позволит отладчику получить символы отладки.

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

  1. Добавьте на свой компьютер разработчика общую папку, указывающую на расположение файлов .pdb.
  2. Настройте переменную среды под названием _NT_SYMBOL_PATH на удаленном компьютере, который указывает на общую папку на вашем компьютере разработчика

Удаленный отладчик теперь будет искать символы на вашем компьютере разработчика.Нет необходимости копировать их для каждой сборки.

См. Видео MS здесь.

Начинайте смотреть с 8-9 минуты.Он демонстрирует, как настроить удаленный отладчик для загрузки символов с общего диска на вашей машине разработки.

Удачи!

  • В меню «Инструменты» в Visual Studio 2010 выберите «Параметры».
  • В диалоговом окне «Параметры» откройте узел «Отладка» и нажмите «Общие».
  • Установите флажок Показать все настройки, если необходимо, и найдите Включить «Только мой код»(только управляемый)
  • Снимите флажок и нажмите ОК

После того, как вы сможете прикрепить удаленный процесс

Удаленная отладка в .NET не будет работать, если вы этого не сделаете. поместите файлы .PDB в один и тот же каталог где существует отлаженный код.

Если VS по-прежнему не может найти исходный код для отладки, отлаживаемый код и исходный код проекта VS не та версия.Решением является перестройка и повторное развертывание проекта.

0xE0434F4D — это исключение из CLR (т. е. управляемого кода).Вам необходимо выполнить удаленную отладку с аутентификацией и выбрать отладку управляемого кода.В качестве альтернативы можно извлечь информацию об управляемых исключениях с помощью некоторых расширений отладчика, но это немного более сложная работа.

Использованная литература:

Если сломано, то...

1800 ИНФОРМАЦИЯ верна, вам необходимо выполнить удаленную отладку с аутентификацией Windows, чтобы отладить управляемый код, иначе вы не сможете загрузить символы для управляемых сборок.Заставить это работать с аутентификацией довольно сложно, поскольку для этого, среди прочего, требуются локальные учетные записи на обеих машинах с одинаковыми паролями.Этот вопрос и все ответы весьма полезны для того, чтобы это заработало.

Удаленная отладка в Visual Studio (VS2008), приложение Windows Forms

У меня были те же проблемы.Нашел ответ на форумы MSDN Я просто скопирую сюда правильный ответ:

Убедитесь, что вы используете правильную версию msvsmon.exe !!!Вот и все, что было!У меня была такая же проблема, когда удаленная отладка приложения C#.Я использовал x64 msvsmon.exe, потому что сервер запускает 64-разрядную Windows Server 2008, но приложение было записано для x86, поэтому мне пришлось запустить версию x86 msvsmon.exe, чтобы избавиться от этой раздражающей ошибки.Больше ничего не требовалось.Просто запустите версию msvsmon.exe, которая соответствует целевой архитектуре вашего приложения ^_ ^

Хотя приведенные выше ответы верны, я сталкивался со случаями, когда PDB, созданные с отлаживаемой сборкой, находились в удаленном месте и не подхватывались.Если вы используете TFS или другой механизм сборки, поддерживающий публикацию символов отладки, я бы рекомендовал сделать это.Затем в разделе «Параметры Visual Studio» > «Отладка» > «Символы» вы можете добавить это местоположение в параметр «Серверы символов», чтобы загружать эти символы в любое время, когда они будут найдены совпадающими.

Это позволило мне отлаживать почти все, что я написал, даже если это динамически вызываемая сборка (то, что я не мог заставить работать хоть убей, публикуя только символы вместе со сборкой).Воспользуйтесь этой очень удобной функцией!

Я смог получить эту работу, отправившись на свойства проекта, вкладка компиляции и установив выходной путь на мою удаленную машину, например, Myserver Myshare MyAppdir

На вкладке отладки я установил флажок Использовать удаленный компьютер и установил значение myserver.

Я также столкнулся с этим при использовании пользовательского конфигурация сборки. (DEV вместо отладки)

Чтобы исправить это, я изменил параметр «Свойства проекта» -> «Сборка» -> «Вывод» -> «Дополнительно» и убедился, что параметр «Вывод» -> «Информация об отладке» был установлен. полный или только для PDB.По умолчанию Выпускать конфигурация обычно устанавливается на никто.

Идти к Инструменты->Параметры->Отладка->Символы и добавьте путь к файлам .pdb для исполняемого файла.Путь на моей локальной машине работал нормально.

Согласно документации, для управляемого (я пытался подключиться к управляемой службе Windows (построенной на основе .net 4.5) на удаленном компьютере с Visual Studio 2012) символы должны быть на пульте машина.

Итак, я просто сохранил символы (убедитесь, что они соответствуют модулям/сборкам приложения на удаленном компьютере) на удаленном компьютере, поделился ими и ссылался на них через настройки символов из локальной системы (где работает vs).

Примечание:служба и символы не обязательно должны находиться в том же каталоге, где они работают у меня со службой Windows 2k12 + .net 4.5.

подробности:

http://msdn.microsoft.com/en-us/library/bt727f1t(v=vs.100).aspx

Выдержка из ссылки:

Поиск файлов символов (.pdb)


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

• Файлы символов для собственных приложений должны располагаться на главном компьютере Visual Studio.

Файлы символов для управляемых приложений должны находиться на удаленном компьютере.

• Файлы символов для смешанных (управляемых и собственных) приложений должны располагаться как на главном компьютере Visual Studio, так и на удаленном компьютере.

С уважением!

Я столкнулся с этой проблемой, и приведенные выше решения не помогли мне.В моем случае в моем решении VS2010 было много проектов.Проект, который я пытался удаленно отладить, был нет установлен в моем решении VS2010 как StartUp Project, потому что мои сценарии make были не совсем правильными.

Я щелкнул правой кнопкой мыши проект в своем решении, который пытался отлаживать, и выбрал Set as StartUp Project а затем мои символы загрузились правильно, и моя точка останова была достигнута.

У меня была та же проблема при удаленной отладке, она была решена с помощью следующих шагов в VS 2008:

  1. вы копируете локальный файл PDB вместе со своими двоичными файлами
  2. Запустите ту же версию msvmon, для которой было создано ваше приложение. Если ваше приложение создано для архитектуры x86, вам необходимо запустить версию msvmon x86, даже если вы запускаете ее на компьютере x64.Он выдаст предупреждение, когда вы попытаетесь запуститься, но он должен запуститься.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top