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

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://www.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ⅴaaaaaa毛片| 久久久久国产精品www| 欧美日韩成人精品| 亚洲电影免费| 久久久久久久999| 亚洲一区在线免费观看| 欧美日韩一区二区三区在线| 亚洲茄子视频| 亚洲国产精品久久人人爱蜜臀| 久久精品理论片| 欧美日韩精选| 亚洲第一网站| 久久久久久久波多野高潮日日 | 久久www成人_看片免费不卡| 国产精品久久久久久久久婷婷 | 亚洲精品欧洲精品| 欧美日本亚洲视频| 在线一区日本视频| 一区二区三区免费观看| 国产精品高清在线| 午夜免费在线观看精品视频| 亚洲男同1069视频| 国产亚洲欧美aaaa| 免费成人美女女| 欧美国产在线电影| 亚洲伊人观看| 欧美一区1区三区3区公司| 国外成人在线视频| 亚洲缚视频在线观看| 另类专区欧美制服同性| 久久精品一二三区| 亚洲精品麻豆| 亚洲深夜福利在线| 国际精品欧美精品| 亚洲国产成人精品女人久久久| 欧美精品乱码久久久久久按摩| 99视频在线观看一区三区| 亚洲视频二区| 在线观看久久av| 日韩视频在线免费| 国产婷婷色一区二区三区四区| 免费成人黄色| 国产精品国产三级国产| 久久在线免费观看| 欧美日韩国产不卡在线看| 午夜精品久久久久久久99黑人| 久久精品国产第一区二区三区最新章节 | 亚洲欧美韩国| 久久久美女艺术照精彩视频福利播放| 亚洲激情在线| 亚洲欧美色婷婷| 亚洲美女视频网| 欧美伊人精品成人久久综合97| 一级成人国产| 久久久久久夜| 先锋影院在线亚洲| 女人色偷偷aa久久天堂| 欧美一区二区三区免费看| 欧美激情综合亚洲一二区| 久久九九国产精品| 欧美视频在线一区| 亚洲福利视频网站| 欧美视频网址| 亚洲电影在线| 久久嫩草精品久久久精品一| 国产精品色网| 亚洲精选视频免费看| 亚洲国产精品国自产拍av秋霞| 亚洲综合色丁香婷婷六月图片| 99精品国产福利在线观看免费| 久久精品成人欧美大片古装| 性欧美暴力猛交另类hd| 欧美日韩另类字幕中文| 亚洲大胆av| 韩国av一区二区| 香蕉精品999视频一区二区| 亚洲影视九九影院在线观看| 欧美福利视频在线观看| 伊人久久婷婷| 久久成人免费| 久久久久网址| 好看的日韩视频| 久久久久久久一区二区三区| 久久久久久免费| 国产在线精品二区| 午夜精品国产| 欧美亚洲色图校园春色| 国产精品va在线播放| 夜夜爽99久久国产综合精品女不卡 | 国产精品网站在线| 亚洲欧美日韩天堂| 久久国内精品视频| 国产小视频国产精品| 亚洲综合国产| 久久精品国产96久久久香蕉| 国产亚洲成人一区| 欧美一区二区三区在线观看视频| 久久国产精品亚洲77777| 国产欧美一区二区精品仙草咪| 亚洲一区二区在线| 久久久一二三| 亚洲欧洲一区二区在线播放| 欧美成人网在线| 亚洲欧洲美洲综合色网| 亚洲午夜精品久久久久久app| 国产精品xnxxcom| 亚洲欧美日韩国产综合在线| 久久综合九色99| 亚洲国产专区| 欧美午夜视频| 久久精品国产精品| 亚洲国内高清视频| 亚洲欧美一区二区三区在线| 狠狠干综合网| 欧美日韩国产综合在线| 香蕉成人久久| 亚洲国产精品电影在线观看| 亚洲综合成人婷婷小说| 一区二区三区在线免费视频 | 99xxxx成人网| 国产精品色网| 免费日韩精品中文字幕视频在线| 日韩一区二区福利| 久久久久久久久伊人| 日韩视频在线观看| 国产情人综合久久777777| 久久永久免费| 中国女人久久久| 欧美多人爱爱视频网站| 亚洲欧美在线网| 欧美一级片久久久久久久| 欧美在线观看视频| 亚洲国产精品久久久久| 欧美偷拍另类| 久久婷婷国产综合精品青草| 亚洲精品日韩在线观看| 国产视频一区在线观看| 欧美精品在线看| 久久久久久久成人| 亚洲欧美大片| 最新日韩在线视频| 久久久999成人| 亚洲欧美另类中文字幕| 亚洲欧洲精品一区| 黄色av日韩| 国产美女一区二区| 欧美日韩国产影片| 免费久久久一本精品久久区| 欧美怡红院视频| 亚洲与欧洲av电影| 夜夜狂射影院欧美极品| 亚洲黄色成人| 欧美韩日亚洲| 麻豆91精品91久久久的内涵| 欧美一区二区在线| 亚洲影院色无极综合| av成人国产| 亚洲片在线资源| 亚洲国产精品久久人人爱蜜臀| 国外精品视频| 国产亚洲福利一区| 国产精品日韩精品欧美在线| 欧美性片在线观看| 欧美日韩综合精品| 欧美日韩国产色综合一二三四| 欧美大片91| 欧美寡妇偷汉性猛交| 欧美成人69av| 欧美激情精品久久久久| 欧美国产三区| 欧美人交a欧美精品| 欧美乱在线观看| 欧美日韩一区二区三区在线看| 欧美日韩精品三区| 欧美日韩国产一级片| 欧美午夜精品理论片a级按摩| 欧美日韩亚洲网| 国产精品久久久久aaaa| 国产精品久久久免费| 国产欧美在线播放| 国产一区二区三区成人欧美日韩在线观看| 国产喷白浆一区二区三区| 国内精品视频666| 亚洲高清在线播放| 亚洲福利视频在线| 亚洲精选在线观看| 亚洲一区精品电影| 久久gogo国模裸体人体| 另类av导航| 亚洲精品小视频在线观看| 亚洲午夜成aⅴ人片| 欧美一区在线直播| 久久婷婷一区| 欧美日本中文字幕| 国产精品专区h在线观看| 激情成人综合| 一本色道综合亚洲| 久久黄色网页| 亚洲国产精品一区二区第四页av|