Как отлаживать dll c ++ из проекта c #?

Я создал проект  `visual c ++ 6.0 dll`  и использовал его из моего кода  `[C#](/tag5179)` . Теперь я хочу отлаживать  `dll` , но я не могу это сделать.

Для этого я выбираю следующий вариант:

* поместите точку прерывания в код проекта  `visual c ++` .
* создайте dll и скопируйте его в каталог моего проекта  `[C#](/tag5179)` .
* Теперь я строю проект  `[C#](/tag5179)`  и dll отлично работает (метод отлично вызывается).
* Теперь я хочу отладить  `dll` .
* Я следую блогу и открываю проект  `c ++`  и выбираю  `Attach to process`  из  `vc ++` .
* , но я не могу найти выполняемый процесс проекта  `visual [C#](/tag5179)` , тогда как он доступен в процессе диспетчера задач.

В моем проектном решении  `[C#](/tag5179)`  у меня есть два проекта i.e.

* веб-сервис (я назвал метод dll во время доступа к URL-адресу)
* Другим вариантом является  `webform application` , который запускает веб-службы.

Теперь, пожалуйста, помогите мне, как мне отладить мою dll. Я следил за таким количеством блогов, но все они сосредоточены на методе  `Attaching process` , который не работает в моем состоянии. Что мне делать?

Вам нужно включить неуправляемую отладку, она не включена по умолчанию в любом сценарии, потому что ваша основная программа управляется.

You do it in your [C#](/tag5179) project with Project > Properties > Debug tab > tick the "Enable unmanaged code debugging" checkbox.

You do it with Tools > Attach to Process by clicking the Select button. Choose the "Debug these code types" radio button and tick both Managed and Native. You may have to resort to only native if your process is 64-bit.

Set a breakpoint in the DLL's source code and be sure to write [C#](/tag5179) code that exercises the DLL function. If you still have trouble getting a breakpoint then use Debug > Windows > Modules and verify that you see the DLL in the module list. Get additional troubleshooting info by right-clicking it, select Symbol Load Information. Which shows a trace of where the debugger looked for the PDB file.



Вы можете добавить проект C ++ в свое решение [C#](/tag5179) и добавить ссылку непосредственно к проекту (не dll), тогда вам не нужно будет копировать DLL. После этого просто начните обычную отладку (F5) вашего проекта [C#](/tag5179), а точки останова будут работать и для проекта C ++. Этот способ будет очень удобен для отладки. Я пробовал такую отладку и не менял никаких других настроек.