如何使用COM接口调试应用程序?

时间:2010-06-11 22:04:19

标签: c# com debugging watch catia

我正在使用C#构建一个使用CATIA COM模块的应用程序。当我在我的c#项目中导入COM时,我认为Visual C#express会为我自动生成Interop。

所有这一切都正常。但是,当我尝试在运行时调试应用程序并使用watch时,每个对象都是System.__ComObject,我无法获得它们的“真实”值。

有没有办法告诉调试器我的COM对象的类型?

目标是更熟悉这个我不太了解的新API。有时,由于界面层次结构非常深,因此很难猜测所有内容的正确类型

2 个答案:

答案 0 :(得分:2)

如果您遇到问题,请不要发布代码示例。大多数情况下,它取决于您希望在调试器中看到的如何创建或转换对象(如果可能的话,创建具有new的对象实例总是更好。您应该搜索有关Runtime Callable Wrapper(RCW)的信息。这是“无法理解你想要的人”。

顺便说一句,如果你可以使用Visual Studio 2010,你的实时可以更轻松(参见http://blogs.msdn.com/b/habibh/archive/2009/09/22/debugging-a-com-object-runtime-callable-wrapper-with-visual-studio-2010.aspx)。

如果您使用

,两个链接可以帮助您解决问题

http://dotnetdebug.net/category/com-interop/

http://resources.esri.com/help/9.3/arcgisengine/dotnet/e6532ba4-d769-48a6-8bc4-8592352b9bf4.htm

Inspecting an instance of a COM / Interop class properly in VS.Net's debugger?

http://dotnetdebug.net/2005/09/10/runtime-callable-wrapper-internals-and-common-pitfalls/

答案 1 :(得分:0)

在Visual Studio中,如果您打开工具>>选项,然后调试>>常规,请确保已选中“使用受管兼容模式”选项。本应显示的COM对象作为它们的正确类型的调试器。