2008-09-30 6 views
38

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

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

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

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

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

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

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

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

+0

Как выглядит стек вызовов? Могут не быть загружены символы, потому что они выбрали исключение в недрах программы. Единственный другой способ - убедиться, что у вас есть правильный exe на удаленной системе. – JeffFoster 2008-09-30 06:25:15

+1

@Xelluloid: можете ли вы рассказать о том, как вы присоединяете процесс и доказываете, что pdb находятся в одной и той же папке вдоль dll? Наконец, вы также можете предоставить экран в окне MODULE (после того, как вы присоедините процесс, нажмите ctrl-> alt-> u и посмотрите, какие модули загружены. – 2008-11-17 03:13:20

ответ

24

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

+0

Необходимо ли его копировать с клиентской машины? установили один и тот же проект Visual Studio на удаленном компьютере, и у него есть свои .PDB-файлы в папке bin, хотя я до сих пор получаю сообщение «..pdb not loaded» – DevDave 2013-05-30 10:45:04

+2

. Файлы с расширением .pdb генерируются вместе с вашими сборками, поэтому они новы с каждой версией и должны быть скопированы. – 2013-05-30 15:05:32

+2

Проблема для меня заключалась в том, что на моей машине разработки все мои проекты Visual Studio находятся на диске D :, а на сервере только C: drive + Я разрабатывал веб-сайт ASP.NET. Я решил, что проблема заключается в том, чтобы перейти -> Свойства проекта -> Сборка -> Выходной путь -> c: \ inetpub \ wwwroot \ mysite \ bin. Таким образом, пути .pdb стали одинаковыми на моей машине и сервере dev. – kape123 2014-01-21 19:53:22

4

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

Ссылки:

If broken it is...

5

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

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

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

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

См. MS-видео here.

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

Удачи вам!

3

1800 Информация правильная, вам нужно выполнить удаленную отладку с помощью проверки подлинности Windows, чтобы отлаживать управляемый код, иначе вы не сможете загрузить символы для управляемых сборок. Получение этого для работы с аутентификацией довольно сложно, так как для этого требуются локальные учетные записи на обеих машинах с одинаковыми паролями. Этот вопрос и ответы всех очень полезны для того, чтобы это работало.

Remote Debugging in Visual Studio (VS2008), Windows Forms Application

3

меня были те же проблемы. Найден ответ на msdn forums я просто копировать/вставить правильный ответ здесь:

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

10
  • В меню Сервис в Visual Studio 2010, выберите Параметры.
  • В диалоговом окне «Параметры» откройте узел «Отладка» и нажмите «Генералы».
  • Проверка Показать все параметры, если это необходимо и найти Enable Just My Code (Managed только)
  • Uncheck это и нажмите кнопку OK

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

3

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

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

1

Я был в состоянии получить эту работу, перейдя в Project Properties, вкладку Компиляция и настройка выходного Сложение путь к моей удаленной машине, например \ MyServer \ MyShare \ myappdir

На вкладке отладки У меня есть использование удаленной машины проверено и установлено на myserver

0

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

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

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

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

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

Отрывок из ссылки:

локационных символов (PDB-файлов)


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

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

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

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

С уважением!

1

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

Чтобы исправить это, я модифицировал Свойства проекта -> Build -> Output -> Дополнительно установка и обеспечил выход -> Debug Info параметр был полный или pdb-only. По умолчанию Конфигурация выпуска обычно устанавливается в none.

0

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

Смежные вопросы