从本地Win32应用程序调用C#COM程序集时,该如何调试?
时间:2020-03-06 14:39:31 来源:igfitidea点击:
我正在开发一个可通过Delphi 7(iow,本机win32,而不是.net)应用程序通过COM调用的Cassembly。
到目前为止,它似乎有效。我已经导出了一个TLB文件,并将其导入到我的Delphi项目中,然后可以创建我的Cobject并调用其函数。
很好,但是很快我将真正想使用Visual Studio在Ccode运行时对其进行调试。设置断点,逐步执行代码,完成所有这些工作。
我曾尝试在创建COM对象后破解Delphi代码,然后寻找VS添加的进程,但找不到。
有没有办法设置VS2008来做到这一点?我希望能够打f5并让VS启动Delphi可执行文件,等待Ccode被调用,然后将其自身添加到它。
只是请不要告诉我我必须使用MessageBox.Show等。
解决方案
将以下内容放入要调试的方法中:
#if DEBUG if (!System.Diagnostics.Debugger.IsAttached) Debugger.Launch(); #endif
当我们要调试时,请构建一个调试版本并在应用程序中使用它。运行此代码后,将弹出一个对话框,询问我们是否要添加调试器。
我们可以仅添加到本机应用程序,即可正常查看断点,查看堆栈,监视等。创建COM对象后,我们需要添加。
创建对象时,我放置了一个Afx MsgBox来停止应用程序的流,然后添加调试器。
在VS2008项目属性页的"调试"选项卡上,有一个选项可以设置其他"启动操作"。
当我们按F5键时,可用于运行外部程序(例如,Delphi应用程序)。