1
我試圖使用WINDBG來調試在某些應用程序(Autodesk Revit)中加載的C++/CLI模塊。問題是在非託管類方法中設置的斷點未被命中。我有這個類:WinDBG調試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"
然而,這些斷點不會被命中,即使類的對象被實例化並且成員函數被調用。 任何想法?
我從來沒有調試C++ CLI,不過,我的直覺告訴我,你設置MSIL斷點這是還沒有jitter。你可以嘗試sos的!bpmd來設置斷點 – xwlan 2013-05-14 15:21:05
另一個可能的解決方法是將非託管類放在'#pragma unmanaged' – 2013-05-15 23:23:15