Почему при удаленной отладке не загружаются символы? - PullRequest
40 голосов
/ 30 сентября 2008

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

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

  • msvcr72.dll
  • 1008 * файл msvsmon.exe *
  • NatDbgDE.dll
  • NatDbgDEUI.dll
  • NatDbgEE.dll
  • NatDbgEEUI.dll

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

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

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

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

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

Ответы [ 14 ]

25 голосов
/ 30 сентября 2008

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

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

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

См. MS Video здесь .

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

Удачи!

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

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

5 голосов
/ 30 сентября 2008

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

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

4 голосов
/ 30 сентября 2008

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

Ссылки:

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

3 голосов
/ 13 декабря 2013

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

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

3 голосов
/ 18 мая 2011

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

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

3 голосов
/ 14 октября 2009

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

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

1 голос
/ 11 июля 2016

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

1 голос
/ 27 декабря 2014

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

Чтобы исправить это, я изменил Свойства проекта -> Построить -> Вывод -> Расширенные настройки и удостоверился, что параметр Вывод -> Информация отладки был полный или только для pdb . Конфигурация Release по умолчанию обычно устанавливается на none .

image

...