Удаленная отладка приложения с помощью версий CRT DEBUG, когда VS не установлен на удаленной машине - PullRequest
5 голосов
/ 22 июля 2011

Сначала позвольте мне сказать, что я могу удаленная отладка и выпуск сборки на удаленном компьютере.Я настроил свою сборку релиза так же, как и мою отладочную сборку, но я в основном должен был убедиться, что флаг отладки не установлен.Я имел дело с этим некоторое время и наконец решил попытаться выяснить, почему я должен был пройти через это.Я должен также упомянуть, что мой опыт удаленной отладки ограничен этим проектом, и программа C # использует C ++ / CLI (собранный с / clr) .DLL, чтобы выступать в роли некоторых критических библиотек C ++.Мне не нужно отлаживать базовые библиотеки C ++, но мне нужно отлаживать код C ++ / CLI.(Одна из причин, по которой я упоминаю об этом, заключается в том, что я не могу связывать библиотеки статически при использовании флага / clr.),Оказывается, с установленным флагом отладки компоновщик связывается в MSVCR100D.DLL и MSVCP100D.DLL, когда флаг не установлен, он использует файлы без суффикса "D".Теперь обычно я могу просто скопировать свои версии этих .DLL на удаленную машину, но есть проблема.Мой ноутбук с VS2010 - это 64-битный компьютер, а целевой компьютер 32-битный.Это означает, что единственные версии тех библиотек, которыми я владею, являются 64-битными.Я установил удаленную отладку для VS2010 (у меня была такая же проблема в 2008 году) на удаленной машине, но она также не включает отладочные версии этих .DLL (я не уверен почему, но я предполагаю, что этодизайн).Поэтому у меня следующие вопросы:

  1. Имеется ли у зарегистрированного владельца VS2010 действительный источник для 32-битных версий этих .DLL, которые можно поставить на удаленную машину?
  2. Есть липроще ли мне получить поддержку отладки?То есть я могу изменить какой-то другой параметр, который просто говорит VSу не использовать отладочную версию этих двух библиотек DLL?Преимущество здесь в том, что символ DEBUG будет установлен, и любой условный код, использующий его, будет работать.

Ответы [ 2 ]

8 голосов
/ 22 июля 2011

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

По умолчанию они расположены по следующему пути:

<Program Files folder>\Microsoft Visual Studio 10.0\VC\redist\Debug_NonRedist

В этой папке вы найдете две дополнительные папки (x64 и x86), которые содержат отладочные версии этих библиотек DLL для соответствующих платформ.

Но обратите особое внимание на название папки (Debug_NonRedist). Это означает, что эти отладочные библиотеки DLL не распространяются . Конечно, разработчик, которому принадлежит лицензия VS, может использовать ее при тестировании своего кода на другом компьютере, но они должны , а не распространяться на клиентские машины и использоваться для запуска вашего приложения. (По твоему вопросу похоже, что ты это знаешь, но в любом случае стоит указать будущим гуглерам.)


Кроме того, вы можете изменить версию DLL CRT, с которой связан проект Visual Studio, для конкретных конфигураций проекта. Это означает, что вы можете скомпилировать «отладочную» версию своего приложения, но скажите Visual Studio, чтобы она ссылалась на полные распространяемые версии CRT.

Для этого:

  1. Щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите «Свойства».

  2. Убедитесь, что в раскрывающемся списке в верхней части диалогового окна выбрана конфигурация «Отладка».

  3. Разверните элемент «C / C ++» в TreeView и выберите «Генерация кода».

  4. Измените значение параметра «Библиотека времени выполнения» на «Многопоточная DLL (/ MD)» или «Многопоточная (/ MT)».

    Обратите внимание, что вы просто говорите Visual Studio , а не , чтобы использовать варианты «Debug» для каждого из этих параметров. Они все еще значат одно и то же. Первый будет динамически связываться с DLL, второй будет статически связывать CRT с вашим приложением. Выберите наиболее подходящий для вашего случая. (Я часто нахожу удобным настроить мои сборки «Debug» так, чтобы они статически связывались именно для таких случаев.)

0 голосов
/ 08 марта 2016

Этот вопрос относится к более старой версии Visual Studio, но на случай, если кто-нибудь придет сюда за более новой версией (как я), есть встроенная поддержка для развертывания отладочных DLL-библиотек, которые вам нужны в VS 2013 (возможно, ранее ). Это очевидная настройка, но ее легко пропустить, если кто-то торопится (как я). Так что, возможно, это кому-нибудь поможет.

На страницах свойств, под Debugging, когда для Debugger to launch установлено значение Remote Windows Debugger, в списке свойств есть опция с именем Deploy Visual C++ Debug Runtime Libraries. Просто установите это на Yes.

Обновление - в соответствии с запросом, чтобы уточнить, к каким страницам свойств я обращаюсь, и указать, как получить к ним доступ: в Solution Explorer щелкните правой кнопкой мыши запуск проект (тот, что выделен жирным шрифтом) и нажмите Свойства в контекстном меню. Откроется окно Property Pages . На панели слева разверните Свойства конфигурации , а затем выберите Отладка , второй элемент в разделе Свойства конфигурации .

Изменить до обновления: Я попал сюда через уведомление и не увидел, что мог бы просто сказать: «См. Ответ Коди Грэя для картины окна», чтобы удовлетворить просьбу о разъяснении. , Но в любом случае есть практические рекомендации на случай, если это кому-нибудь понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...