Как я могу отладить COM-сборку C#, когда она вызывается из собственного приложения Win32?

StackOverflow https://stackoverflow.com/questions/126868

Вопрос

Я разрабатываю сборку C#, которую нужно вызывать через COM из приложения Delphi 7 (iow, собственный Win32, а не .net).

Пока что это, кажется, работает.Я экспортировал файл TLB, импортировал его в свой проект Delphi и могу создать свой объект C# и вызывать его функции.

Это здорово, но скоро я собираюсь Действительно хотите использовать Visual Studio для отладки кода C# во время его работы.Устанавливайте точки останова, пошагово просматривайте код и все такое.

Я пытался взломать код Delphi после создания COM-объекта, а затем искать процесс, к которому можно подключиться VS, но не могу его найти.

Есть ли способ настроить VS2008 для этого?Я бы предпочел просто нажать f5 и заставить VS запустить исполняемый файл Delphi, дождаться вызова кода C #, а затем присоединить себя к нему.Но я полагаю, что мог бы жить и с ручным подключением к процессу.

Только, пожалуйста, не говорите мне, что мне нужно обойтись MessageBox.Show и т. д.

Это было полезно?

Решение

На странице свойств проекта VS2008 на вкладке «Отладка» есть возможность установить другое действие запуска.

Это можно использовать для запуска внешней программы (например.ваше приложение Delphi), когда вы нажимаете F5.

Другие советы

Поместите следующее в метод, который вы хотите отладить:

#if DEBUG
    if (!System.Diagnostics.Debugger.IsAttached)
        Debugger.Launch();
#endif

Если вы хотите выполнить отладку, создайте отладочную версию и используйте ее в своем приложении.При запуске этого кода появляется диалоговое окно с вопросом, хотите ли вы подключить отладчик.

Вы можете просто подключиться к собственному приложению и увидеть точку останова, просмотреть стеки, часы и т. д.обычно.Вам нужно будет подключиться после создания COM-объекта.

Я помещаю Afx MsgBox при создании объекта, чтобы остановить поток приложения, а затем подключаю отладчик.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top