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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

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

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

wps_clip_image-3641

Figure 1.1 View of TColStd_Array1OfInteger in Locals Window

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

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

2.For Array Container

對(duì)于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í)數(shù)據(jù)顯示如下圖2.1所示:

wps_clip_image-9252

Figure 2.1 OpenCASCADE array in Locals Windows

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

3.For List Container

對(duì)于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)試時(shí)對(duì)于類TColStd_ListOfInteger,natvis診斷說找不到類TColStd_ListNodeOfListOfInteger定義,當(dāng)跟蹤到此類一個(gè)具體函數(shù)時(shí),就可以看到具體的值了:

wps_clip_image-12159

Figure 3.1 Natvis gives a Error info

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

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

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框架來對(duì)自定義的類進(jìn)行可視化,方便調(diào)試。OpenCASCADE中有很多容器類直接使用了指針,調(diào)試程序時(shí)數(shù)據(jù)很不直觀。應(yīng)用Natvis來對(duì)一些類在調(diào)試時(shí)的視圖進(jìn)行配置,可以方便查看其中數(shù)據(jù),使OpenCASCADE的調(diào)試更輕松。

對(duì)于一維數(shù)組的natvis定義還是很簡單的,但是對(duì)于List出現(xiàn)了問題。如果這個(gè)問題解決了,對(duì)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++實(shí)用技巧之配置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ù)  更多評(píng)論   

2015-02-02 19:47 by eryar
在OpenCASCADE文件夾:
dox/dev_guides/debug/occt.natvis
已經(jīng)提供了一個(gè)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>
            欧美一区二区在线免费播放| 欧美一级久久久| 91久久精品国产91性色| 国产精品免费一区二区三区观看 | 亚洲午夜一区二区三区| 亚洲国产成人精品视频| 91久久亚洲| 影音先锋久久| 影音先锋在线一区| 好吊日精品视频| 依依成人综合视频| 在线观看欧美精品| 在线激情影院一区| 国产日产高清欧美一区二区三区| 国产精品久久国产精麻豆99网站| 欧美日韩国产一区二区三区地区 | 亚洲一区二区三区在线视频| 亚洲人久久久| 日韩一区二区高清| 一区二区日韩精品| 亚洲影视九九影院在线观看| 亚洲愉拍自拍另类高清精品| 亚洲在线不卡| 久久高清一区| 猫咪成人在线观看| 国产精品久久网| 精品88久久久久88久久久| 韩国三级在线一区| 国产精品日韩一区二区| 国产一区二区视频在线观看 | 制服丝袜激情欧洲亚洲| 亚洲网站在线观看| 久久精品水蜜桃av综合天堂| 久久久久久久一区二区| 午夜亚洲视频| 免费日韩av电影| 欧美日韩一区二区在线观看视频 | 最近中文字幕日韩精品| 亚洲视频网在线直播| 99av国产精品欲麻豆| 欧美亚洲一级片| 欧美精品免费视频| 欧美体内谢she精2性欧美| 国产日韩欧美精品综合| 亚洲精品精选| 久久国产精品99国产| 亚洲国产日韩欧美综合久久| 亚洲视频中文字幕| 蜜臀久久久99精品久久久久久 | 亚洲精品中文字幕有码专区| 亚洲欧美日韩区| 老司机一区二区三区| 国产精品福利片| 亚洲人成网站777色婷婷| 午夜精品久久久久久久久久久| 91久久久精品| 美女视频黄 久久| 在线播放精品| 免费在线视频一区| 久久裸体视频| 在线看无码的免费网站| 蘑菇福利视频一区播放| 六月丁香综合| 亚洲精品乱码久久久久久蜜桃91 | 国产一区二区看久久| 欧美一区激情| 欧美在线免费播放| 激情懂色av一区av二区av| 久久深夜福利| 久久综合国产精品| 91久久在线观看| 亚洲激情自拍| 国产精品xxxxx| 欧美在线视频a| 久久久久国产精品厨房| 欧美一区二视频| 极品日韩av| 亚洲二区在线观看| 欧美日韩免费看| 欧美一区二区网站| 久久视频国产精品免费视频在线| 在线观看亚洲视频| 亚洲区国产区| 国产欧美日本一区视频| 老**午夜毛片一区二区三区| 欧美 日韩 国产精品免费观看| 日韩一区二区高清| 亚洲性图久久| 亚洲福利精品| 在线亚洲一区| 亚洲国产女人aaa毛片在线| 亚洲日本中文字幕| 国产精品免费区二区三区观看| 久久久久久久网站| 欧美日韩国产精品一区| 久久精品一区二区国产| 欧美国产日本在线| 久久高清一区| 欧美日韩国产精品专区| 久久精品久久99精品久久| 欧美v日韩v国产v| 欧美一区二区在线播放| 欧美国产亚洲视频| 久久免费午夜影院| 国产精品久久久久久久一区探花| 欧美+亚洲+精品+三区| 国产精品国产三级国产专区53| 蜜乳av另类精品一区二区| 国产精品黄色| 亚洲国产女人aaa毛片在线| 国产午夜精品一区二区三区欧美| 亚洲精品亚洲人成人网| 在线观看成人小视频| 亚洲欧美激情诱惑| 亚洲一区不卡| 欧美精品一区二区久久婷婷| 久久综合激情| 国产欧美一区二区三区在线老狼 | 亚洲毛片播放| 亚洲国产另类久久久精品极度| 亚洲欧美国产高清| 午夜精品久久久久久久蜜桃app| 欧美韩日一区二区| 欧美成人黑人xx视频免费观看| 国产精品自拍三区| 亚洲私人影院| 亚洲欧美大片| 欧美日韩国产色站一区二区三区| 免费亚洲电影在线观看| 国产一区二区主播在线 | 欧美国产亚洲另类动漫| 欧美成人午夜| 亚洲电影免费观看高清完整版| 欧美在线免费视屏| 久久精品成人欧美大片古装| 国产精品稀缺呦系列在线| 99精品视频免费全部在线| 欧美日韩一区视频| 亚洲精品护士| 中日韩午夜理伦电影免费| 欧美v国产在线一区二区三区| 亚洲第一天堂av| 亚洲欧洲精品一区二区三区不卡| 欧美大色视频| 亚洲六月丁香色婷婷综合久久| 亚洲精品系列| 欧美精品 国产精品| 亚洲精品午夜| 性感少妇一区| 韩日精品中文字幕| 久久青青草原一区二区| 亚洲高清资源综合久久精品| 一本久久综合| 国产精品免费aⅴ片在线观看| 亚洲免费一级电影| 久久中文精品| 日韩午夜中文字幕| 国产精品久久国产愉拍| 欧美在线免费视频| 亚洲国产精品第一区二区| 一个色综合av| 国产日韩一区二区三区在线| 久久久国产成人精品| 亚洲电影在线| 性欧美超级视频| 在线看视频不卡| 欧美午夜在线观看| 久久九九热免费视频| 亚洲欧洲一区二区天堂久久| 亚洲欧美日本国产有色| 伊人精品成人久久综合软件| 欧美激情在线观看| 欧美亚洲色图校园春色| 欧美高清视频免费观看| 亚洲欧洲av一区二区三区久久| 在线精品亚洲| 国产精品美女主播| 欧美国产免费| 久久国产手机看片| 夜夜嗨av一区二区三区网站四季av| 久久久久成人精品| 亚洲小少妇裸体bbw| 亚洲国产另类久久久精品极度| 欧美性猛交视频| 欧美电影在线观看| 久久精品一二三区| 在线亚洲激情| 最新国产の精品合集bt伙计| 久久国产精品第一页| 亚洲网站在线观看| 亚洲二区视频| 国产亚洲电影| 国产精品国产三级国产专播精品人| 久久网站免费| 西西裸体人体做爰大胆久久久| 亚洲清纯自拍| 亚洲福利视频一区| 蜜桃久久精品乱码一区二区| 亚欧成人精品| 香蕉av777xxx色综合一区|