8

我正在开发一个 C# 程序集,该程序集将通过 COM 从 Delphi 7(iow,本机 win32,而不是 .net)应用程序中调用。

到目前为止,它似乎奏效了。我已经导出了一个 TLB 文件,将它导入到我的 Delphi 项目中,我可以创建我的 C# 对象并调用它的函数。

太好了,但很快我真的想在 C# 代码运行时使用 Visual Studio 来调试它。设置断点,单步执行代码,所有这些。

我尝试在创建 COM 对象后中断 Delphi 代码,然后寻找 VS 附加到的进程,但我找不到。

有没有办法设置 VS2008 来做到这一点?我更希望能够按 f5 并让 VS 启动 Delphi 可执行文件,等待调用 C# 代码,然后将自身附加到它。但我想我可以手动附加到一个进程。

只是请不要告诉我我必须使用 MessageBox.Show 等。

4

3 回答 3

12

在 VS2008 项目属性页面的 Debug 选项卡上,有一个选项可以设置不同的 Start Action。

当您按 F5 时,这可用于运行外部程序(例如您的 Delphi 应用程序)。

于 2008-09-24T12:47:12.237 回答
10

将以下内容放在您要调试的方法中:

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

当您想要调试时,构建一个调试版本并在您的应用程序中使用它。当此代码运行时,会弹出一个对话框,询问您是否要附加调试器。

于 2008-09-24T12:40:42.457 回答
1

您可以附加到本机应用程序并正常查看断点、查看堆栈、监视等。您需要在创建 COM 对象后附加。

我在创建对象时放置了一个 Afx MsgBox 以停止应用程序的流程,然后附加调试器。

于 2008-09-24T12:44:06.737 回答