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

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

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

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

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

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

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

Ответы [ 3 ]

11 голосов
/ 24 сентября 2008

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

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

9 голосов
/ 24 сентября 2008

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

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

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

1 голос
/ 24 сентября 2008

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

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

...