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

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>
            午夜欧美不卡精品aaaaa| 亚洲一区在线播放| 欧美日韩岛国| 欧美成人性网| 欧美区在线播放| 欧美四级电影网站| 国产免费亚洲高清| 一区二区三区在线视频免费观看| 精品福利免费观看| 亚洲国产婷婷香蕉久久久久久| 91久久午夜| 亚洲特色特黄| 久久久噜噜噜| 亚洲欧洲日夜超级视频| 亚洲精品视频啊美女在线直播| 一本一本久久| 久久国产视频网| 欧美精品一区在线播放| 国产精品成人一区二区三区夜夜夜| 国产精品黄色在线观看| 激情成人综合网| 在线视频亚洲| 久热精品在线视频| 99精品视频免费全部在线| 午夜精品久久久久久久久久久久久 | 国产亚洲欧洲997久久综合| 影音先锋亚洲视频| 亚洲系列中文字幕| 久久综合给合久久狠狠色| 亚洲免费激情| 久久综合久久久| 国产伦精品一区二区三| 91久久精品美女高潮| 欧美亚洲综合久久| 日韩亚洲视频在线| 欧美大片91| 亚洲成色777777女色窝| 欧美中文字幕| 一区二区三区成人| 欧美精品日韩| 亚洲激情在线激情| 老司机免费视频久久| 亚洲一区二区视频在线观看| 欧美精品一区二区三区蜜臀| 曰韩精品一区二区| 久久久久久电影| 亚洲淫性视频| 国产精品成人一区二区三区夜夜夜 | 久久综合久久88| 亚洲女人小视频在线观看| 欧美女主播在线| 亚洲欧洲一区| 欧美国产欧美综合| 久久综合九色综合网站| 狠狠色伊人亚洲综合网站色| 久久国产精品久久久久久电车| 一本色道久久综合亚洲精品按摩 | 欧美成人在线影院| 影音先锋中文字幕一区二区| 欧美亚洲一区二区在线| 亚洲网站视频| 欧美午夜精品久久久久久孕妇| 一区二区视频欧美| 蜜臀久久99精品久久久画质超高清| 午夜精品久久久久久99热软件| 国产精品hd| 欧美一区二区三区免费看| 亚洲一区在线观看视频 | 免费美女久久99| 亚洲激情偷拍| 91久久极品少妇xxxxⅹ软件| 欧美大片免费| 亚洲视频免费看| 在线亚洲美日韩| 国产精品伊人日日| 久热综合在线亚洲精品| 老色鬼久久亚洲一区二区 | 亚洲精品在线观| 亚洲麻豆av| 国产精品人人做人人爽人人添 | 亚洲伦理网站| 国产精品日韩欧美综合| 久久久久久97三级| 欧美va亚洲va日韩∨a综合色| 亚洲理伦电影| 亚洲一区综合| 亚洲福利在线观看| 99国产精品久久久久老师| 国产精品久久久久久妇女6080| 久久精品视频免费播放| 欧美成人国产一区二区| 亚洲性视频h| 欧美中文在线观看国产| 99综合在线| 久久久久国内| 亚洲午夜视频在线| 久久亚裔精品欧美| 午夜精品av| 欧美二区在线播放| 亚洲欧美日韩精品久久亚洲区| 久久久久国产一区二区三区| 一区二区高清在线| 久久裸体艺术| 亚洲欧美日韩精品| 欧美激情区在线播放| 久久精品成人一区二区三区蜜臀 | 欧美日韩国产系列| 久久久久久久国产| 国产精品女主播| 亚洲福利视频二区| 国产有码一区二区| 一区二区三区国产在线| 在线看成人片| 欧美一二三视频| 亚洲免费视频一区二区| 欧美国产视频日韩| 老鸭窝毛片一区二区三区| 国产精品久久午夜夜伦鲁鲁| 亚洲国产精品一区二区www| 国产欧美91| 中文精品视频| 一区电影在线观看| 免费视频一区二区三区在线观看| 欧美在线你懂的| 欧美午夜一区二区| 亚洲精品五月天| 亚洲精品一区在线观看| 久久综合影音| 久久综合九色综合欧美狠狠| 国产日韩久久| 亚洲欧美日韩另类| 欧美一区2区视频在线观看| 欧美视频一区二区三区在线观看| 亚洲大胆人体视频| 亚洲国产91| 久久亚洲不卡| 亚洲高清毛片| 99精品热视频只有精品10| 欧美成人国产| 欧美www视频| 亚洲狠狠婷婷| 欧美激情成人在线| 99精品视频免费观看视频| 99热免费精品| 欧美天堂亚洲电影院在线播放| 99精品欧美一区| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲精品国产视频| 99国产精品久久久久久久久久| 美女国内精品自产拍在线播放| 欧美激情亚洲| 一本久道久久综合狠狠爱| 欧美日韩在线免费视频| 亚洲香蕉在线观看| 久久久久久欧美| 亚洲高清av在线| 欧美精品一区二区三区四区| 在线亚洲国产精品网站| 久久久久久久久岛国免费| 最近看过的日韩成人| 欧美午夜精品久久久久免费视| 亚洲欧美在线aaa| 欧美bbbxxxxx| 亚洲美女中文字幕| 国产精品羞羞答答xxdd| 久久精品国产亚洲aⅴ| 亚洲国产精品久久| 亚洲欧美日韩精品久久| 国际精品欧美精品| 欧美精品高清视频| 性做久久久久久免费观看欧美| 女人天堂亚洲aⅴ在线观看| 在线视频欧美精品| 激情校园亚洲| 欧美性一区二区| 久久影院亚洲| 亚洲一级片在线看| 亚洲电影第1页| 欧美亚洲日本网站| 亚洲人成在线播放| 国产日韩av高清| 欧美国产精品久久| 午夜影院日韩| 中日韩在线视频| 亚洲激情在线| 免费成人高清在线视频| 亚洲欧美在线磁力| 亚洲精品小视频在线观看| 国产日韩欧美高清| 欧美系列一区| 欧美激情一区二区三区在线视频观看 | 久久成人精品无人区| 亚洲精品视频啊美女在线直播| 国产伦精品一区二区三区视频黑人| 快she精品国产999| 欧美一区二区免费| 亚洲一区在线免费| 99精品久久久| 亚洲乱码精品一二三四区日韩在线 | 亚洲精品视频二区|