我正在尝试使用 WINDBG 调试在某些应用程序(Autodesk Revit)中加载的 C++/CLI 模块。问题是未命中非托管类方法中设置的断点。我有这门课:
class NativeGeometryShape {
public :
NativeGeometryShape()
: width_(10), height_(12)
{}
int GetArea() const;
private :
int width_;
int height_;
};
检查符号提供以下信息:
0:000> x addon_revit2014!Native*
<MSIL:58bd350c > addon_revit2014!NativeGeometryShape::GetArea (void)
<MSIL:58bd1264 > addon_revit2014!NativeGeometryShape::NativeGeometryShape (void)
58bd3500 addon_revit2014!NativeGeometryShape::GetArea (<no parameter info>)
58bd3520 addon_revit2014!NativeGeometryShape::GetArea (<no parameter info>)
58bd1258 addon_revit2014!NativeGeometryShape::NativeGeometryShape (<no parameter info>)
所以我使用 bm 命令设置一些断点:
0:000> bm addon_revit2014!Native*
1: <MSIL:58bd350c > @!"addon_revit2014!NativeGeometryShape::GetArea"
2: <MSIL:58bd1264 > @!"addon_revit2014!NativeGeometryShape::NativeGeometryShape"
3: 58bd3500 @!"addon_revit2014!NativeGeometryShape::GetArea"
4: 58bd3520 @!"addon_revit2014!NativeGeometryShape::GetArea"
5: 58bd1258 @!"addon_revit2014!NativeGeometryShape::NativeGeometryShape"
然而,这些断点永远不会被命中,即使类的对象被实例化并且成员函数被调用。有任何想法吗 ?