青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

Create views of OpenCASCADE objects in the Debugger

Posted on 2015-01-31 19:16 eryar 閱讀(3318) 評論(1)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE 、6.Others

Create views of OpenCASCADE objects in the Debugger

eryar@163.com

Abstract. The Visual Studio Natvis framework lets you customize the way Visual Studio displays native types in debugger variable windows such as the Watch, Locals and Data Tips windows. It supersedes the autoexp.dat file that has been used in earlier versions of Visual Studio and offers XML syntax, better diagnostics, versioning, and multiple file support. The container in OpenCASCADE is difficult for debugging, such as TColStd_Array1OfInteger in the TColStd package, .etc. Use the natvis framework to create views of these objects will make it easy for developers to inspect them during debugging and so accelerate the debug process.

Key Words. Visual Studio Natvis, OpenCASCADE

1. Introduction

因為OpenCASCADE早期使用C開發(fā),所以自定義了一些容器類,如包TColStd中的類,TColGeom包及包TopTools中的類等,這些類在C++中都可以使用STL來替代了。這些類在Debug過程中,很難查看其中的值,如TColStd_Array1OfInteger,這個類相當(dāng)于std::vector<int>,但是Debug時只能看到數(shù)據(jù)的指針,不容易查看容器中每個元素的值,如下圖1.1所示:

wps_clip_image-3641

Figure 1.1 View of TColStd_Array1OfInteger in Locals Window

由上圖1.1可知,對于這個類的對象,Debug時只能看到數(shù)據(jù)的起始指針。為了方便自定義類型調(diào)試,Visual Studio在2012版本以后,引入了Natvis框架,用來替代原來的autoexp.dat來為自定義類型定義調(diào)試時的數(shù)據(jù)顯示。Natvis使用了XML文件,可讀性更好,易于實現(xiàn)。

本文使用Visual Studio的Natvis框架,來對OpenCASCADE中的一些容器類數(shù)據(jù)進(jìn)行可視化,方便開發(fā)者對OpenCASCADE的調(diào)試。

2.For Array Container

對于OpenCASCADE的包TColStd中的數(shù)組類,定義其natvis如下所示:

<Type Name="TColStd_Array1OfInteger">
    
<DisplayString Condition="isAllocated != 1">empty</DisplayString> 
    
<DisplayString>{{size = {myUpperBound - myLowerBound + 1}}}</DisplayString>
    
<Expand>
        
<Item Condition="isAllocated == 1" Name="[size]">myUpperBound - myLowerBound + 1</Item>
        
<ArrayItems Condition="isAllocated == 1">
            
<Size>myUpperBound - myLowerBound + 1</Size>
            
<ValuePointer>(Standard_Integer*)(myStart) + myLowerBound</ValuePointer>
        
</ArrayItems>
    
</Expand>
</Type>

調(diào)試時數(shù)據(jù)顯示如下圖2.1所示:

wps_clip_image-9252

Figure 2.1 OpenCASCADE array in Locals Windows

同理,可對此包中其他一維數(shù)組使用同樣的規(guī)則,即可對其中的數(shù)據(jù)可視化,與std::vector顯示的效果一樣,方便調(diào)試。

3.For List Container

對于OpenCASCADE的包TColStd中的鏈表類,定義其natvis如下所示:

<Type Name="TColStd_ListNodeOfListOfInteger">
    
<DisplayString>{{current = {myValue}}}</DisplayString>
    
<Expand>
        
<LinkedListItems>
            
<HeadPointer>this</HeadPointer>
            
<NextPointer>(TColStd_ListNodeOfListOfInteger*)myNext</NextPointer>
            
<ValueNode>this-&gt;myValue</ValueNode>
        
</LinkedListItems>
    
</Expand>
</Type>

<Type Name="TColStd_ListOfInteger">
    
<DisplayString Condition="myFirst == 0">empty</DisplayString>
    
<Expand>
        
<Item Name="first">(TColStd_ListNodeOfListOfInteger*)myFirst</Item>
    
</Expand>
</Type>

調(diào)試時對于類TColStd_ListOfInteger,natvis診斷說找不到類TColStd_ListNodeOfListOfInteger定義,當(dāng)跟蹤到此類一個具體函數(shù)時,就可以看到具體的值了:

wps_clip_image-12159

Figure 3.1 Natvis gives a Error info

跟蹤到TColStd_ListOfInteger內(nèi)部后,就可以看到類TColStd_ListNodeOfListOfInteger中的數(shù)據(jù)了,但是從TColStd_ListOfInteger的函數(shù)中出來后,就看不到了。

如果這個問題解決了,對于類TopoDS_ListOfShape中的數(shù)據(jù)也可以用同樣的方式來顯示,極大地方便了開發(fā)者對其調(diào)試。如果你對此有解決辦法,歡迎不吝賜教。

wps_clip_image-11017

Figure 3.2 Data view for TColStd_ListNodeOfListOfInteger

先從簡單的容器類著手,解決后可將TopoDS_ListOfShape中的數(shù)據(jù)顯示出來,為OpenCASCADE程序的調(diào)試提供方便。

4.Conclusion

Visual Studio 2012版本以后引入了Natvis框架來對自定義的類進(jìn)行可視化,方便調(diào)試。OpenCASCADE中有很多容器類直接使用了指針,調(diào)試程序時數(shù)據(jù)很不直觀。應(yīng)用Natvis來對一些類在調(diào)試時的視圖進(jìn)行配置,可以方便查看其中數(shù)據(jù),使OpenCASCADE的調(diào)試更輕松。

對于一維數(shù)組的natvis定義還是很簡單的,但是對于List出現(xiàn)了問題。如果這個問題解決了,對TopoDS_ListOfShape的可視化也可做同樣的處理,方便造型算法調(diào)試。若您有解決方案,望不吝賜教。

5. References

1. Create custom views of native objects in the debugger. 

https://msdn.microsoft.com/en-us/library/vstudio/jj620914.aspx

2. Writing debugger type visualizers for C++ using .natvis files

https://code.msdn.microsoft.com/Writing-type-visualizers-2eae77a2#content

3. vczh. C++實用技巧之配置Visual C++的調(diào)試器顯示數(shù)據(jù)結(jié)構(gòu)的格式.

http://m.shnenglu.com/vczh/archive/2013/03/21/198665.html

4. stl.natvis in %VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers

5. qt5.natvis in %VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers

Feedback

# re: Create views of OpenCASCADE objects in the Debugger  回復(fù)  更多評論   

2015-02-02 19:47 by eryar
在OpenCASCADE文件夾:
dox/dev_guides/debug/occt.natvis
已經(jīng)提供了一個natvis文件,不過里面的內(nèi)容比較少,感興趣的可以豐富一下。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美a级一区| 久久免费高清| 国内精品久久久久影院优| 国产精品私房写真福利视频| 欧美日韩免费观看一区| 欧美日产一区二区三区在线观看 | 欧美不卡三区| 欧美国产一区在线| 日韩视频不卡中文| 亚洲网站在线| 欧美中日韩免费视频| 久色婷婷小香蕉久久| 国产精品成人在线观看| 亚洲欧美成人一区二区三区| 亚洲欧美激情四射在线日| 亚洲一区二区伦理| 欧美一区二区三区四区高清| 久久综合狠狠综合久久激情| 欧美国产亚洲另类动漫| 99国产精品视频免费观看一公开| 亚洲新中文字幕| 久久精品视频网| 欧美日韩国产页| 好看的日韩av电影| 99热精品在线观看| 久久国内精品自在自线400部| 美日韩在线观看| 在线亚洲免费| 欧美成在线观看| 国产伦精品一区二区三区免费迷| 精品成人a区在线观看| 一区二区三区欧美在线| 久久亚洲春色中文字幕| 日韩午夜av在线| 久久久噜噜噜久久狠狠50岁| 国产精品成av人在线视午夜片| 狠狠操狠狠色综合网| 亚洲精品日本| 久久精品人人| 亚洲毛片在线看| 麻豆免费精品视频| 国产欧美一区二区三区沐欲| 日韩视频免费观看| 老**午夜毛片一区二区三区| 一区二区三区成人| 欧美激情视频在线播放 | 久久国产精品久久久久久电车| 欧美精品在线观看一区二区| …久久精品99久久香蕉国产| 欧美亚洲免费高清在线观看| 亚洲毛片一区二区| 欧美成人中文字幕| 91久久国产综合久久91精品网站| 久久久水蜜桃| 欧美在线免费看| 国产精品永久| 欧美一区二区日韩| 宅男精品导航| 国产精品福利在线观看| 中国成人黄色视屏| 日韩一级视频免费观看在线| 欧美韩日一区二区| 亚洲精品欧美日韩| 亚洲国产精品成人综合色在线婷婷| 欧美亚洲日本网站| 国产午夜精品视频| 久久久久成人精品| 久久久久成人精品| 亚洲国产日韩一区二区| 亚洲高清在线| 欧美人与禽猛交乱配视频| 99国产精品99久久久久久粉嫩| 欧美激情亚洲视频| 欧美日韩精品一区二区三区四区 | 亚洲午夜av电影| 一区二区欧美亚洲| 国产精品一区二区黑丝| 久久久精品2019中文字幕神马| 午夜视频一区二区| 伊人久久大香线蕉av超碰演员| 你懂的视频一区二区| 欧美激情亚洲| 亚洲在线视频一区| 欧美亚洲免费| 亚洲精品乱码久久久久久蜜桃91| 亚洲精品在线观| 国产精品入口| 免费亚洲一区| 国产精品r级在线| 久久亚洲国产成人| 欧美精品xxxxbbbb| 久久都是精品| 欧美国产成人在线| 久久亚洲综合色一区二区三区| 亚洲影视在线| 在线精品国精品国产尤物884a| 欧美国产成人精品| 欧美视频二区36p| 久久久青草青青国产亚洲免观| 免费日韩视频| 欧美在线视频一区| 欧美日韩福利| 老司机免费视频一区二区三区| 欧美精品1区| 久久久91精品| 国产精品wwwwww| 欧美国产先锋| 国际精品欧美精品| 亚洲视频1区| 亚洲精品免费一区二区三区| 欧美亚洲三区| 亚洲一区二区高清| 欧美~级网站不卡| 久久av二区| 欧美视频网站| 亚洲区中文字幕| 狠狠综合久久av一区二区小说| 99视频精品全国免费| 亚洲黄色片网站| 久久精品国产96久久久香蕉| 亚洲在线黄色| 欧美性大战久久久久久久蜜臀| 欧美国产精品v| 黄色成人在线网址| 午夜一区在线| 午夜精品久久久久久久久久久| 欧美成人精品福利| 男人的天堂亚洲在线| 国产人成一区二区三区影院| 在线视频中文亚洲| 亚洲一二三区在线| 欧美片在线观看| 亚洲国产精品久久久| 亚洲国产天堂久久综合| 久久久久国产一区二区三区| 久久久久国产一区二区| 国产欧亚日韩视频| 亚洲欧美日韩久久精品| 久久国产黑丝| 韩国精品一区二区三区| 久久久久久久久久码影片| 玖玖视频精品| 亚洲国产另类久久久精品极度| 久久综合狠狠综合久久综青草| 玖玖精品视频| 在线免费不卡视频| 欧美成人国产| 日韩亚洲在线观看| 亚洲欧美日韩精品久久| 国产美女扒开尿口久久久| 亚洲在线视频观看| 久久深夜福利| 亚洲精品美女久久7777777| 欧美了一区在线观看| 亚洲视频在线观看三级| 久久精品国产免费| 在线视频国内自拍亚洲视频| 毛片av中文字幕一区二区| 亚洲国产视频一区| 亚洲网站在线| 国产精品家庭影院| 亚洲伊人久久综合| 久久在线精品| 亚洲精品在线免费| 欧美亚洲免费| 亚洲国产三级网| 欧美视频在线免费| 欧美在线黄色| 亚洲欧洲在线播放| 欧美一区二区在线视频| 尤物精品在线| 欧美午夜一区二区福利视频| 欧美在线观看视频在线| 亚洲级视频在线观看免费1级| 亚洲淫性视频| 亚洲国产日韩欧美一区二区三区| 欧美午夜精品久久久久久久| 久久成人免费视频| 99re这里只有精品6| 久久久久久欧美| 一区二区三区日韩精品视频| 国产亚洲午夜| 欧美偷拍一区二区| 老色鬼精品视频在线观看播放| 一本色道久久综合亚洲精品婷婷| 久久青草久久| 性色av一区二区三区红粉影视| 亚洲福利视频网站| 国产欧美日本| 欧美性开放视频| 开心色5月久久精品| 亚洲免费一级电影| 亚洲精品男同| 欧美aaa级| 久久精品国产一区二区三区免费看 | 国产精品欧美经典| 欧美经典一区二区三区| 久久久综合网| 欧美中在线观看| 午夜在线成人av|