Ответ 1
Да, вы можете сделать это с помощью Visual Studio. У вас есть два варианта:
Настройте проект для запуска внешней программы
-
Откройте проект DLL.
-
В свойствах проекта перейдите на вкладку Отладка.
-
Выберите Запустить внешнюю программу и укажите путь к внешней программе, которая вызовет вашу DLL, а также любые аргументы командной строки, которые вам могут потребоваться, и рабочий каталог, если это отношение.
-
Сохраните проект.
-
Установите точки останова в вашем коде, где вы хотите.
-
Нажмите F5, чтобы начать отладку. (На этом этапе ваши точки останова скажут, что они не будут удалены, потому что символы не загружены. Не беспокойтесь об этом на данный момент.)
-
Сделайте все возможное, чтобы внешнее приложение загрузило вашу библиотеку и запустило ваш код.
Visual Studio будет определять загрузку модуля, загружать символы и останавливаться на контрольной точке.
Присоединить к существующему процессу
Если вы не можете запустить процесс, но вместо этого нужно подключиться к уже запущенному процессу, вы также можете сделать это:
(Замечание: если вы используете "Экспресс" версию Visual Studio, я не думаю, у нее есть эта функция, но я не уверен в этом. чтобы сказать: у вас будет либо пункт меню, упомянутый на шаге 4 ниже, либо нет.)
-
Убедитесь, что процесс запущен.
-
Откройте проект DLL.
-
Установите точки останова и т.д.
-
В меню Отладка выберите Прикрепить к процессу...
-
В появившемся диалоговом окне найдите процесс в списке, выделите его и нажмите Прикрепить.
-
Visual Studio перейдет в режим отладки. (На этом этапе ваши точки останова скажут, что они не будут удалены, потому что символы не загружены. Не беспокойтесь об этом на данный момент.)
-
Сделайте все, что вы делаете, чтобы загрузить внешний процесс и запустить свой код.
Visual Studio будет определять нагрузку модуля во внешнем процессе, загружать ваши символы и останавливаться на вашей точке останова.
NB В обоих случаях, если внешний процесс загружает вашу DLL из какой-то другой, кроме bin/Debug
папки вашего проекта, вы должны убедиться, что вы копируете DLL в другое место каждый раз, когда вы (вы можете установить, что это произойдет автоматически в параметрах проекта). В противном случае Visual Studio не сможет обнаружить, что загружаемая DLL - это та, которую вы пытаетесь отлаживать.