2013-05-14 65 views
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" 

然而,這些斷點不會被命中,即使類的對象被實例化並且成員函數被調用。 任何想法?

+1

我從來沒有調試C++ CLI,不過,我的直覺告訴我,你設置MSIL斷點這是還沒有jitter。你可以嘗試sos的!bpmd來設置斷點 – xwlan 2013-05-14 15:21:05

+0

另一個可能的解決方法是將非託管類放在'#pragma unmanaged' – 2013-05-15 23:23:15

回答

0

嘗試在成員設置訪問斷點,看他們被訪問時,並從中功能(BA R1)