2008-09-24 6 views
6

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

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

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

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

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

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

ответ

10

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

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

+0

Ничего себе, это работает! Благодарю. – Blorgbeard 2008-09-24 13:12:10

9

место следующее в методе вы хотите отлаживать:

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

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

+1

Это действительно опрятный трюк! – Blorgbeard 2008-09-24 13:11:37

1

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

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