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

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://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ù)  更多評(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精品亚洲| 亚洲最新视频在线播放| 你懂的国产精品| 亚洲欧美另类中文字幕| 欧美日韩一二三四五区| 久久精精品视频| 免费黄网站欧美| 亚洲视频免费| 欧美色图五月天| 亚洲国产专区校园欧美| 在线看国产一区| 亚洲图片在线| 日韩视频免费看| 亚洲国产美国国产综合一区二区| 快播亚洲色图| 美女网站久久| 免费观看成人www动漫视频| 欧美.www| 亚洲国产一区二区a毛片| 欧美激情欧美激情在线五月| 免费欧美网站| 麻豆精品网站| 亚洲国产专区| 欧美激情在线免费观看| 欧美激情成人在线| 欧美中文在线免费| 欧美成人免费小视频| 欧美中文字幕不卡| 久久国产视频网站| 亚洲国产高清视频| 亚洲三级国产| 亚洲色诱最新| 久久国产精品一区二区| 久久亚洲国产成人| 免费欧美在线视频| 久久一区二区三区av| 欧美色中文字幕| 1000部国产精品成人观看| 国产精品日本精品| 伊人成人在线视频| 狠狠色狠狠色综合人人| 亚洲黄色av| 欧美在线999| 久久久久久久久久久成人| 久久经典综合| 亚洲国产精品第一区二区三区| 久久免费高清| 蜜臀av性久久久久蜜臀aⅴ| 亚洲精品少妇网址| 亚洲午夜在线观看| 久久婷婷国产综合精品青草| 欧美精品精品一区| 国产精品美女久久久久av超清 | 国产精品视频xxxx| 男人的天堂亚洲| 国产精品制服诱惑| 午夜精品三级视频福利| 亚洲精品日韩在线| 激情综合自拍| 久久精品一区二区三区四区| 欧美激情精品久久久久久变态 | 欧美在线观看网站| 久久精品在线视频| 亚洲专区一区| 99国产精品国产精品久久| 在线性视频日韩欧美| 国产一区二区三区四区老人| 欧美淫片网站| 欧美视频精品在线| 亚洲国产小视频| 国产精品中文字幕欧美| 亚洲一级二级| 久久久久国产成人精品亚洲午夜| 国产日韩在线视频| 久热精品视频在线观看一区| 蜜臀久久99精品久久久久久9 | 午夜精品视频一区| 久久精品综合一区| 亚洲大片av| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美午夜精品久久久久免费视| 美女诱惑一区| 伊人狠狠色j香婷婷综合| 亚洲欧美日韩精品久久亚洲区| 亚洲网站在线观看| 久久久久一区二区| 久久av资源网| 欧美日韩亚洲天堂| 欧美在线一二三| 亚洲承认在线| 欧美韩日一区二区三区| 日韩午夜电影av| 久久综合中文字幕| 欧美华人在线视频| 亚洲综合首页| 亚洲乱码视频| 亚洲高清成人| 亚洲欧美清纯在线制服| 国产精品永久免费观看| 香蕉久久a毛片| 亚洲精品在线电影| 久久精品99国产精品| 一区二区在线观看视频| 国产亚洲综合性久久久影院| 欧美韩国在线| 欧美精品一区二区三区蜜臀| 亚洲观看高清完整版在线观看| 欧美一区二区在线免费观看| 夜夜嗨av一区二区三区网页| 亚洲精品网址在线观看| 91久久精品日日躁夜夜躁欧美| 亚洲福利久久| 亚洲国产精品黑人久久久| 亚洲成色999久久网站| 国产色爱av资源综合区| 国产精品扒开腿做爽爽爽软件| 欧美一区二区三区在线免费观看| 一本不卡影院| 亚洲视频1区| 久久久精品2019中文字幕神马| 久久久久国产一区二区三区| 亚洲免费高清视频| 亚洲精品久久视频| 欧美高清成人| 最近看过的日韩成人| 欧美高清视频一二三区| 欧美成人高清视频| 亚洲黄色在线观看| 亚洲国产成人久久综合| 欧美成人福利视频| 欧美黄色影院| 亚洲激情视频在线播放| 亚洲第一综合天堂另类专| 久久免费视频这里只有精品| 在线一区二区视频| 亚洲精品日韩精品| 在线亚洲精品| 亚洲视频在线二区| 中日韩男男gay无套| 久久男女视频| 日韩午夜精品视频| 先锋影音一区二区三区| 欧美一级久久久| 欧美日韩视频| 国产一区二区剧情av在线| 91久久精品网| 最新国产乱人伦偷精品免费网站 | 欧美激情一区二区在线| 欧美美女喷水视频| 在线一区视频| 亚洲欧美色婷婷| 六十路精品视频| 欧美一区二区视频在线观看| 久久综合九色综合欧美狠狠| 亚洲精品视频二区| 99国产精品久久久久老师| 久久精品国产99精品国产亚洲性色 | 在线亚洲精品| 欧美大片一区| 精品成人国产在线观看男人呻吟| 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品亚洲乱码伦伦中文| 午夜一区在线| 亚洲一区二区三区精品动漫| 亚洲午夜精品| 国内精品久久久久久久影视麻豆 | 欧美日精品一区视频| 亚洲国产欧美日韩精品| 亚洲综合导航| 狠狠色噜噜狠狠狠狠色吗综合| 国产精品资源| 久久久久88色偷偷免费| 久久高清福利视频| 亚洲日本激情| 亚洲男人第一av网站| 在线看欧美视频| 在线综合欧美| 亚洲精品护士| 久久精品中文| 欧美一区二区视频观看视频| 乱人伦精品视频在线观看| 亚洲一区视频在线| 欧美激情精品久久久久久变态| 欧美一区二区三区电影在线观看| 久久久久久久波多野高潮日日| 亚洲色图制服丝袜| 欧美成人69av| 欧美成人中文| 日韩视频―中文字幕| 亚洲综合精品自拍| 在线播放亚洲| 99精品国产福利在线观看免费| 久久久精品tv| 在线成人性视频| 老牛嫩草一区二区三区日本 | 国产精品www色诱视频| 亚洲伦理中文字幕| 亚洲社区在线观看|